【问题标题】:Python pandas to_sql maximum 2100 parametersPython pandas to_sql 最多2100个参数
【发布时间】:2018-06-01 14:16:35
【问题描述】:

直到几天前,我总是将数千个参数存储到我的数据库(SQL 服务器)中。 我使用 spyder (Python 3.6)。 我在几天前使用 conda update 更新了所有软件包,现在我无法将我的数据帧导入我的数据库。

--- 我不想在 2100 个参数的 DF 中拆分解决方法 ---

我想了解发生了什么变化以及为什么以及如何恢复正常工作。

这是一个简单的代码:

import pyodbc
import sqlalchemy
import numpy as np
import pandas as pd


c = pyodbc.connect("Driver={SQL Server};Server=**;Trusted_Connection=no;Database=*;UID=*;PWD=*;")
cursor = c.cursor()  
engine = sqlalchemy.create_engine('mssql+pyodbc://*:*/*?driver=SQL+Server')



df= pd.DataFrame(np.random.randn(5000))
df.to_sql('pr',engine,if_exists= 'append', index=False)

这是错误: ProgrammingError: (pyodbc.ProgrammingError) ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]传入的请求参数过多,服务器最多支持2100个参数。减少参数个数参数并重新发送请求。(8003) (SQLExecDirectW)')

非常感谢

【问题讨论】:

    标签: python pandas pyodbc


    【解决方案1】:

    pandas 0.23 中有一个针对此错误的开放(截至 2018.06.01)issue

    您可能希望降级到 0.22,这将按预期工作。

    【讨论】:

      【解决方案2】:

      尝试限制块大小:

      df.to_sql('pr',
                engine,
                chunksize=20,
                if_exists= 'append',
                index=False)
      

      这对我有用。认为选择正确的块大小数字的数学是: chunksize = 2100 / 你的列数

      【讨论】:

        猜你喜欢
        • 2018-04-09
        • 2020-04-14
        • 2017-08-13
        • 1970-01-01
        • 2022-08-04
        • 1970-01-01
        • 2021-04-22
        • 2021-04-24
        • 1970-01-01
        相关资源
        最近更新 更多