考虑使用 pandasread_sql
直接查询数据库。目前,虽然你会收到一个错误:
键错误:'_typ'
但是,感谢@TomAubrunner在此Github 票证上的工作修复,这似乎是adodbapi
.
- 查找位置
adodpapi
:print(adodbapi.__file__)
- 打开文件夹中的脚本:
apibase.py
找到:return self._getValue(self.rows.columnNames[name.lower()])
并替换为以下try/execpt
块:
try:
return self._getValue(self.rows.columnNames[name.lower()])
except:
return False
完成后,即使使用 qmark 参数,也可以像任何 DB-API pandas 连接一样运行:
import pandas as pd
import adodbapi
conn = adodbapi.connect("PROVIDER=SQLOLEDB;Data Source={0};Database={1}; \
UID={2};PWD={3};".format(server,db,user,pwd))
# WITHOUT PARAMS
df = pd.read_sql("SELECT * FROM myTable", conn)
# WITH PARAMS
df = pd.read_sql("SELECT * FROM myTable WHERE [Col]= ?", conn, params=['myValue'])
conn.close()