【发布时间】:2018-06-04 09:42:07
【问题描述】:
我正在尝试将数据框写入 SQL Server 表。我的代码:
conn = pymssql.connect(host="Dev02", database="DEVDb")
cur = conn.cursor()
query = "INSERT INTO dbo.SCORE_TABLE VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
cur.executemany(query, df_sql)
conn.commit()
cur.close()
conn.close()
df_sql 的维度是(5860, 20),即数据框中的列数与 SQL Server 表中的列数相同。我仍然收到以下错误:
ValueError:sql 中的占位符比可用的参数多
以下更新
根据其中一位 cmets,我尝试使用 turbodbc,如下所示:
conn = turbodbc.connect(driver="{SQL Server}", server="Dev02", Database="DEVDb")
conn.use_async_io = True
cur = conn.cursor()
query = "INSERT INTO dbo.STG_CONTACTABILITY_SCORE VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
cur.executemany(query, df_sql.values)
cur.commit()
cur.close()
conn.close()
我收到以下错误:
ValueError:具有多个元素的数组的真值是 模糊的。使用 a.any() 或 a.all()
我不明白。这里有什么问题。我看到df_sql.values 并没有发现任何问题。
ndarray的第一行如下:
[nan 'DUSTIN HOPKINS' 'SOUTHEAST MISSOURI STATE UNIVERSITY' 13.0
'5736512217' None None 'Monday' '8:00AM' '9:00AM' 'Summer' None None None
None '2017-12-22 10:39:30.626331' 'Completed' None '1-11KUFFZ'
'Central Time Zone']
【问题讨论】:
-
或许这篇文章会对你有所帮助stackoverflow.com/a/18245311/7948962
标签: python sql-server pandas pymssql