在试图写一个pandas
“据帧到sql-server
,我得到这个错误:to_sql大熊猫数据帧到SQL服务器错误:DatabaseError
DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': ('42S02', "[42S02] [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'sqlite_master'. (208) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Statement(s) could not be prepared. (8180)")
看来pandas
正在考虑sqlite
,而不是真实的数据库。
它不是一个连接问题,因为我可以从sql-server
使用pandas.read_sql
连接相同的连接读取已使用
这不是一个数据库的权限问题,或者因为我可以通过线写线设置使用相同的连接参数:
cursor = conn.cursor()
cursor.execute('insert into test values (1, 'test', 10)')
conn.commit()
我可以只写一个循环由线到instert线,但我想知道为什么to_sql
是不是w ^为我而言,我担心它不会那么高效。
环境: Python
:2.7 Pandas
:0.20.1 sqlalchemy
:1.1.12
在此先感谢。
可运行例如:
import pandas as pd
from sqlalchemy import create_engine
import urllib
params = urllib.quote_plus("DRIVER={SQL Server Native Client 11.0};SERVER=
<servername>;DATABASE=<databasename>;UID=<username>;PWD=<password>")
engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
test = pd.DataFrame({'col1':1, 'col2':'test', 'col3':10}, index=[0])
test.to_sql("dbo.test", con=engine, if_exists="append", index=False)
你为什么想查询一个叫表'使用SQL Server sqlite_master'?无论你,我,还是我们两个都在这里失去了一些东西。 –
你是怎么调用'to_sql'的?你是否将SQLAlchemy引擎作为[第二个参数](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html)传递? – unutbu
嘿!不,我不是......我只是运行'df.to_sql(“dbo.test”,con = conn,if_exists =“append”)',熊猫自动搜索sqlite_master;我不知道为什么!哪里'conn = engine.connect()。connection' – AlexSB