Commit 4a8724ee by baiquan

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

- 新增更新功能:在导入抖店账号时,如果环境ID已存在,则进行更新操作
- 统计并记录插入和更新的记录数- 优化代码结构,提高可读性和可维护性
parent facd415a
import pandas as pd import pandas as pd
from loguru import logger from loguru import logger
from config import settings from config import settings
import pymysql
def get_mysql_connection(): def get_mysql_connection():
"""获取 MySQL 数据库连接""" """获取 MySQL 数据库连接"""
...@@ -51,23 +51,56 @@ def import_doudian_accounts_to_mysql(file_path): ...@@ -51,23 +51,56 @@ def import_doudian_accounts_to_mysql(file_path):
password = VALUES(password), password = VALUES(password),
company = VALUES(company) 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并执行插入/更新 # 遍历DataFrame并执行插入/更新
insert_count = 0
update_count = 0
for _, row in df.iterrows(): for _, row in df.iterrows():
# 确保所有字段都有值,不能为NaN
if pd.notna(row['环境ID']): if pd.notna(row['环境ID']):
data = ( # 确保所有字段都有值,不能为NaN
str(row['环境']) if pd.notna(row['环境']) else '', environment_id = int(row['环境ID'])
int(row['环境ID']) if pd.notna(row['环境ID']) else 0, # 假设环境ID不能为空 cursor.execute(select_sql, (environment_id,))
str(row['账号']) if pd.notna(row['账号']) else '', # 获取查询结果
str(row['密码']) if pd.notna(row['密码']) else '', result = cursor.fetchone()
str(row['公司']) if pd.notna(row['公司']) else '' if result:
) # 如果存在,则更新
cursor.execute(insert_sql, data) 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不能为空
str(row['账号']) if pd.notna(row['账号']) else '',
str(row['密码']) if pd.notna(row['密码']) else '',
str(row['公司']) if pd.notna(row['公司']) else ''
)
cursor.execute(insert_sql, data)
print(data)
# 提交事务 # 提交事务
connection.commit() connection.commit()
logger.info(f"成功导入/更新 {len(df)} 条记录") logger.info(f"成功导入{insert_count}/更新{update_count} 条记录")
except Exception as e: except Exception as e:
# 发生错误时回滚 # 发生错误时回滚
...@@ -77,9 +110,6 @@ def import_doudian_accounts_to_mysql(file_path): ...@@ -77,9 +110,6 @@ def import_doudian_accounts_to_mysql(file_path):
connection.close() connection.close()
import pymysql
def find_account_by_environment_id(environment_id): def find_account_by_environment_id(environment_id):
""" """
根据环境ID查找账号密码信息 根据环境ID查找账号密码信息
...@@ -126,18 +156,18 @@ def find_account_by_environment_id(environment_id): ...@@ -126,18 +156,18 @@ def find_account_by_environment_id(environment_id):
connection.close() 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__": # if __name__ == "__main__":
# excel_file = "doudian_accounts.csv" # 你的Excel文件路径 # # 查找环境ID为1075702795的账号
# import_doudian_accounts_to_mysql(excel_file) # account_info = find_account_by_environment_id(1075702795)
\ No newline at end of file #
# # 如果需要将结果用于其他处理
# 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