【问题标题】:Writing Python Dataframe to MSSQL Table将 Python 数据框写入 MSSQL 表
【发布时间】:2018-01-08 15:07:22
【问题描述】:

我目前有一个包含 23 列和 20,000 行的 Python 数据框。

使用 Python 代码,我想将我的数据框写入我拥有凭据的 MSSQL 服务器。

作为测试,我能够使用以下代码成功地将一些值写入表中:

connection = pypyodbc.connect('Driver={SQL Server};' 
                              'Server=XXX;' 
                              'Database=XXX;' 
                              'uid=XXX;' 
                              'pwd=XXX')

cursor = connection.cursor()

for index, row in df_EVENT5_15.iterrows():
    cursor.execute("INSERT INTO MODREPORT(rowid, OPCODE, LOCATION, TRACKNAME)

cursor.execute("INSERT INTO MODREPORT(rowid, location) VALUES (?,?)", (5, 'test'))
connection.commit()

但是如何将数据框表中的所有行写入 MSSQL 服务器?为此,我需要在我的 Python 环境中编写以下步骤:

  1. 删除 MSSQL 服务器表中的所有行

  2. 将我的数据帧写入服务器

【问题讨论】:

    标签: python sql-server connection


    【解决方案1】:

    当您说 Python 数据框时,我假设您使用的是 Pandas 数据框。如果是这种情况,那么您可以使用to_sql 函数。

    df.to_sql("MODREPORT", connection, if_exists="replace")
    

    if_exists 参数设置为 replace 将在写入记录之前删除现有表中的所有行。

    【讨论】:

    • 不建议将 if_exists 设置为替换,因为它会删除表并使用可能不同的 DDL 重新创建。
    【解决方案2】:

    我知道你问已经有一段时间了,但删除 SQL 服务器表中所有行的最简单方法(问题的第 1 点)是发送命令

    TRUNCATE TABLE Tablename
    

    这将删除表中的所有数据,但将表和索引留空,因此您或 DBA 不需要重新创建它。它在运行时也使用较少的事务日志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      相关资源
      最近更新 更多