Python pandas to_sql最大2100参数

时间:2018-06-01 14:16:36

标签: python pandas pyodbc

我总是在几天前将数千个参数存储到我的数据库(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驱动程序] [SQL Server]传入的请求参数太多。服务器最多支持2100个参数。减少数量参数并重新发送请求。(8003)(SQLExecDirectW)')

非常感谢

2 个答案:

答案 0 :(得分:2)

对于pandas 0.23中的这个错误,有一个开放的(截至2018.06.01)standard

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

答案 1 :(得分:0)

尝试限制块大小:

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

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