【发布时间】:2018-01-23 15:54:01
【问题描述】:
我正在尝试使用 dataframe.to_sql 函数将 pandas 数据帧 df 插入 SQL Server DB。但我得到以下错误:
源代码:
import pyodbc
import sqlalchemy
import urllib
df #sample dataframe
params = urllib.parse.quote_plus("DRIVER={SQL Server};SERVER=GIRSQL.GIRCAPITAL.com;DATABASE=Tableau;UID=SQL_User;PWD=pass")
engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
engine.connect()
df.to_sql(name='[Tableau].[dbo].[Test table]',con=engine, index=False,
if_exists='append')
错误:
文件“C:\Users\Arvinth\sqlalchemy\engine\default.py”,第 470 行,在 do_execute cursor.execute(语句,参数)
sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]'INTEGER' 附近的语法不正确。(102) (SQLExecDirectW)" ) [SQL: '\nCREATE TABLE [[Tableau].[dbo].[Test table]] (\n\t[A] INTEGER NULL, \n\t[B] INTEGER NULL, \n\t[C]整数 NULL\n)\n\n']
示例数据框:
A B C
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
谁能帮忙解决这个问题。
【问题讨论】:
-
这不是必需的 [Tableau].[dbo]. 因为您正在连接到 Tableau 并且默认架构是 dbo我>。只需传递表名:
df.to_sql(name='Test table',con=engine, index=False, if_exists='append') -
它工作正常。非常感谢!
标签: python sql-server pandas sql-insert pandas-to-sql