新闻中心

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

2025-11-01
浏览次数:
返回列表

将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数据库:

    首先,需要使用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的文本文件,其中包含如下格式的列表数据:

    小麦企业网站展示系统1.1 小麦企业网站展示系统1.1

    小麦企业网站展示系统介绍:一、安装使用将xiaomai.sql导入数据库二、后台登录后台帐号,密码默认都是admin,config.php 配置文件可根据自行需要修改,IP地址,数据库用户名,密码,及表名后台目录默认admin,支持自行任意修改目录名三、注意事项1 本源码完全免费,采用伪静态,减少不必要的源码重复,速度更快,支持二次开发。2、注明本程序编码为UTF8,如发生乱码,请注意修改编码3、

    小麦企业网站展示系统1.1 2 查看详情 小麦企业网站展示系统1.1
    [['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数据库表的教程的详细内容,更多请关注其它相关文章!


# 错误信息  # seo网站属于什么专业  # 南京快速建设网站  # seo官网内链优化  # 哪种行业适合做seo  # 防城港品牌推广招聘网站  # seo游戏推广软件  # 3如何做网站推广  # 三亚银川网站推广  # 马鞍山正规seo优化  # 产品推广营销怎么做的呢  # 不正确  # 可能出现  # word  # 实际情况  # 可以使用  # 详细介绍  # 请根据  # 行数  # 企业网站  # 文档  # sql语句  # win  # app  # windows  # python 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】  12306选座怎么选到特殊座位_12306特殊座位选择注意事项  如何使用Node.js csv 包按条件移除含空字段的CSV记录  win11专注助手在哪 Win11免打扰模式设置与自动化规则【指南】  C++如何实现线程池_C++11手动实现一个简单的固定大小线程池  J*a最大堆Heapify方法修复:索引计算与边界条件深度解析  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  AO3官方可用镜像 Archive of Our Own网页版最新入口  天猫2025双十一0点秒杀攻略 天猫爆款抢购时间  如何优雅地扩展SprykerGlue后端API授权逻辑,使用spryker/glue-backend-api-application-authorization-connector-extension  新三国志曹操传110级星符试炼夏侯渊极难攻略  php源码怎么看淘宝客系统_看php源码淘宝客系统技巧  qq邮箱日历功能怎么用_创建日程与会议邀请的技巧  C++ explicit关键字防止隐式转换_C++构造函数安全规范  win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】  c++中的std::basic_string的SSO优化_c++短字符串优化深度解析  2026春节假期票务安排_2026春节放假购票指南  J*aScript Promise链中如何正确终止后续.then执行并处理错误  蛙漫2台版漫画地址 Manwa2正版网页版链接  lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略  抖音怎么赚钱_抖音创作者变现方法与途径指南  在Go Martini框架中高效服务动态生成图像的实践指南  在J*a中如何使用BigDecimal进行高精度计算_BigDecimal类应用指南  TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程  在J*a中如何隐藏复杂性_使用门面模式组织对象交互  Pandas DataFrame 多条件优先级排序与排名  J*a应用集成GitHub CLI与API认证指南  怎么在浏览器上运行HTML文件_浏览器运行HTML文件技巧【技巧】  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  Go语言中JSON数据解码与字段访问指南  必由学官方登录入口 必由学教师学生账号快速访问  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  Win10系统怎么查看已安装更新_Win10卸载有问题的更新补丁  千牛数据看板网页版_千牛数据看板网页版访问方法  AO3最新入口2025公告_AO3中文官网合集  解决移动端滚动问题的overflow属性应用指南  支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】  Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略  Django表单验证失败时保留用户输入数据的最佳实践  动漫花园资源网使用步骤_动漫花园资源网下载流程  Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址  海棠账号登录入口_登录海棠账户同步阅读记录  C++编译期如何执行复杂计算_C++模板元编程(TMP)技巧与应用  必由学官方平台入口 必由学在线课堂登录地址  Lar*el如何生成PDF或Excel文件_Lar*el文档导出工具与使用教程  Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法  抖音小游戏合成大西瓜免费秒玩入口链接 抖音小游戏热门合集秒玩网站 

搜索