
本文旨在指导开发者如何使用Python将列表数据高效地写入SQL Server数据库表中。通过使用`ast.literal_eval()`安全地解析包含列表数据的文本文件,并结合`cursor.executemany()`方法,可以实现批量数据插入,避免手动解析和逐行插入,从而提高数据处理效率。
在开始之前,请确保已安装以下组件:
以下步骤详细介绍了如何将Python列表数据写入SQL Server数据库表:
连接到SQL Server数据库:
立即学习“Python免费学习笔记(深入)”;
首先,需要使用pyodbc库建立与SQL Server数据库的连接。请替换以下代码中的连接字符串,使其与你的数据库配置相匹配。
import pyodbc
# 连接字符串,请根据实际情况修改
connection_string = (
r'DRIVER={SQL Server};'
r'SERVER=your_server_name;'
r'DATABASE=your_database_name;'
r'UID=your_user_id;'
r'PWD=your_password;'
)
try:
cnxn = pyodbc.connect(connection_string)
cursor = cnxn.cursor()
print("数据库连接成功!")
except pyodbc.Error as ex:
sqlstate = ex.args[0]
print(f"数据库连接失败: {sqlstate}")
exit()注意事项:
读取包含列表数据的文件:
假设你有一个名为files.txt的文本文件,其中包含如下格式的列表数据:
[['ID', '001'], ['Name', 'Jon'], ['Score', '90'], ['Semester', 'Fall']] [['ID', '002'], ['Name', 'Ama'], ['Score', '87'], ['Semester', 'Fall']]
以下代码演示了如何读取文件并使用ast.literal_eval()安全地解析每一行数据:
from ast import literal_eval
file_path = 'files.txt'
data_list = []
try:
with open(file_path, 'r') as file:
for line in file:
# 使用 ast.literal_eval 安全地解析字符串为列表
try:
data = literal_eval(line.strip())
# 提取值,忽略键
row = [value for field, value in data]
data_list.append(row)
except (ValueError, SyntaxError) as e:
print(f"解析行时出错: {line.strip()}, 错误信息: {e}")
except FileNotFoundError:
print(f"文件未找到: {file_path}")
exit()
print(f"成功解析 {len(data_list)} 行数据.")代码解释:
将数据写入SQL Server数据库表:
现在,可以使用cursor.executemany()方法将解析后的数据批量写入SQL Server数据库表。请确保已创建相应的表,并替换以下代码中的表名和列名。
# 假设数据库表中包含 id, name, score, semester 四列
sql_insert = "INSERT INTO yourTable (id, name, score, semester) VALUES (?, ?, ?, ?)"
try:
cursor.executemany(sql_insert, data_list)
cnxn.commit() # 提交事务
print(f"成功插入 {cursor.rowcount} 行数据到数据库.")
except pyodbc.Error as ex:
sqlstate = ex.args[0]
print(f"数据库插入失败: {sqlstate}")
cnxn.rollback() # 回滚事务,防止数据不一致
# 关闭游标和连接
cursor.close()
cnxn.close()
print("数据库连接已关闭.")代码解释:
import pyodbc
from ast import literal_eval
# 数据库连接字符串,请根据实际情况修改
connection_string = (
r'DRIVER={SQL Server};'
r'SERVER=your_server_name;'
r'DATABASE=your_database_name;'
r'UID=your_user_id;'
r'PWD=your_password;'
)
file_path = 'files.txt'
data_list = []
try:
cnxn = pyodbc.connect(connection_string)
cursor = cnxn.cursor()
print("数据库连接成功!")
try:
with open(file_path, 'r') as file:
for line in file:
# 使用 ast.literal_eval 安全地解析字符串为列表
try:
data = literal_eval(line.strip())
# 提取值,忽略键
row = [value for field, value in data]
data_list.append(row)
except (ValueError, SyntaxError) as e:
print(f"解析行时出错: {line.strip()}, 错误信息: {e}")
except FileNotFoundError:
print(f"文件未找到: {file_path}")
exit()
print(f"成功解析 {len(data_list)} 行数据.")
# 假设数据库表中包含 id, name, score, semester 四列
sql_insert = "INSERT INTO yourTable (id, name, score, semester) VALUES (?, ?, ?, ?)"
try:
cursor.executemany(sql_insert, data_list)
cnxn.commit() # 提交事务
print(f"成功插入 {cursor.rowcount} 行数据到数据库.")
except pyodbc.Error as ex:
sqlstate = ex.args[0]
print(f"数据库插入失败: {sqlstate}")
cnxn.rollback() # 回滚事务,防止数据不一致
# 关闭游标和连接
cursor.close()
cnxn.close()
print("数据库连接已关闭.")
except pyodbc.Error as ex:
sqlstate = ex.args[0]
print(f"数据库连接失败: {sqlstate}")
exit()本文详细介绍了如何使用Python将列表数据写入SQL Server数据库表。通过使用ast.literal_eval()安全地解析数据,并结合cursor.executemany()方法进行批量插入,可以高效地完成数据导入任务。在实际应用中,请根据具体情况修改代码,例如调整连接字符串、表名、列名等。同时,务必注意错误处理,确保程序的健壮性和数据的完整性。
以上就是将Python列表数据写入SQL Server数据库表的教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号