将Python列表数据写入SQL Server数据库表的教程

聖光之護
发布: 2025-11-01 11:12:52
原创
168人浏览过

将python列表数据写入sql server数据库表的教程

本文旨在指导开发者如何使用Python将列表数据高效地写入SQL Server数据库表中。通过使用`ast.literal_eval()`安全地解析包含列表数据的文本文件,并结合`cursor.executemany()`方法,可以实现批量数据插入,避免手动解析和逐行插入,从而提高数据处理效率。

准备工作

在开始之前,请确保已安装以下组件:

  • Python: 建议使用Python 3.6或更高版本。
  • pyodbc: 用于连接SQL Server数据库的Python库。可以使用pip install pyodbc安装。
  • SQL Server: 确保已安装并运行SQL Server数据库,并拥有可供写入数据的数据库和表。

步骤详解

以下步骤详细介绍了如何将Python列表数据写入SQL Server数据库表:

  1. 连接到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()
    登录后复制

    注意事项:

    • 确保已安装SQL Server的ODBC驱动程序。
    • 连接字符串中的your_server_name、your_database_name、your_user_id和your_password需要替换为实际的值。
    • 如果使用Windows身份验证,连接字符串可能需要进行相应的修改。
  2. 读取包含列表数据的文件:

    假设你有一个名为files.txt的文本文件,其中包含如下格式的列表数据:

    爱图表
    爱图表

    AI驱动的智能化图表创作平台

    爱图表99
    查看详情 爱图表
    [['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)} 行数据.")
    登录后复制

    代码解释:

    • ast.literal_eval()函数可以将字符串安全地解析为Python字面量,例如列表、字典等。
    • 使用try...except块处理可能出现的ValueError或SyntaxError,例如文件内容格式不正确。
  3. 将数据写入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("数据库连接已关闭.")
    登录后复制

    代码解释:

    • cursor.executemany()方法可以批量执行SQL语句,提高数据插入效率。
    • cnxn.commit()用于提交事务,将数据写入数据库。
    • cnxn.rollback()用于回滚事务,在发生错误时撤销所有操作,保证数据一致性。
    • 使用try...except块处理可能出现的数据库错误,例如表不存在、列名不正确等。

完整代码示例

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中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号