Commit 4a8724ee by baiquan

feat(dao): 优化抖店账号导入功能

- 新增更新功能:在导入抖店账号时,如果环境ID已存在,则进行更新操作
- 统计并记录插入和更新的记录数- 优化代码结构,提高可读性和可维护性
parent facd415a
import pandas as pd
from loguru import logger
from config import settings
import pymysql
def get_mysql_connection():
"""获取 MySQL 数据库连接"""
......@@ -51,11 +51,43 @@ def import_doudian_accounts_to_mysql(file_path):
password = VALUES(password),
company = VALUES(company)
"""
update_sql = """
UPDATE doudian_accounts
SET environment = %s,
account = %s,
password = %s,
company = %s
WHERE environment_id = %s
"""
# 执行查询SQL
select_sql = """
SELECT environment, account, password, company
FROM doudian_accounts
WHERE environment_id = %s
"""
# 遍历DataFrame并执行插入/更新
insert_count = 0
update_count = 0
for _, row in df.iterrows():
# 确保所有字段都有值,不能为NaN
if pd.notna(row['环境ID']):
# 确保所有字段都有值,不能为NaN
environment_id = int(row['环境ID'])
cursor.execute(select_sql, (environment_id,))
# 获取查询结果
result = cursor.fetchone()
if result:
# 如果存在,则更新
update_count += 1
data = (
str(row['环境']) if pd.notna(row['环境']) else '',
str(row['账号']) if pd.notna(row['账号']) else '',
str(row['密码']) if pd.notna(row['密码']) else '',
str(row['公司']) if pd.notna(row['公司']) else '',
environment_id
)
cursor.execute(update_sql, data)
else:
insert_count += 1
data = (
str(row['环境']) if pd.notna(row['环境']) else '',
int(row['环境ID']) if pd.notna(row['环境ID']) else 0, # 假设环境ID不能为空
......@@ -64,10 +96,11 @@ def import_doudian_accounts_to_mysql(file_path):
str(row['公司']) if pd.notna(row['公司']) else ''
)
cursor.execute(insert_sql, data)
print(data)
# 提交事务
connection.commit()
logger.info(f"成功导入/更新 {len(df)} 条记录")
logger.info(f"成功导入{insert_count}/更新{update_count} 条记录")
except Exception as e:
# 发生错误时回滚
......@@ -77,9 +110,6 @@ def import_doudian_accounts_to_mysql(file_path):
connection.close()
import pymysql
def find_account_by_environment_id(environment_id):
"""
根据环境ID查找账号密码信息
......@@ -126,18 +156,18 @@ def find_account_by_environment_id(environment_id):
connection.close()
# 使用示例
if __name__ == "__main__":
# 查找环境ID为1075702795的账号
account_info = find_account_by_environment_id(1075702795)
# 如果需要将结果用于其他处理
if account_info:
print("\n获取到的账号信息:")
print(account_info)
# # 使用示例
# if __name__ == "__main__":
# excel_file = "doudian_accounts.csv" # 你的Excel文件路径
# import_doudian_accounts_to_mysql(excel_file)
\ No newline at end of file
# # 查找环境ID为1075702795的账号
# account_info = find_account_by_environment_id(1075702795)
#
# # 如果需要将结果用于其他处理
# if account_info:
# print("\n获取到的账号信息:")
# print(account_info)
# 使用示例
if __name__ == "__main__":
excel_file = "./../doudian_accounts.csv" # 你的Excel文件路径
import_doudian_accounts_to_mysql(excel_file)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment