根据Gord Thompson的说法:在使用pandas pyodbc的pyodbc Connection对象时得到一个警告并不被反对,我同意,对于具有SQLAlchemy方言的数据库。但我使用的是一个obsure数据库-Sage 100 ERP基于的Providex。我可以像在cnxn = pyodbc.connect("DSN=SOTAMAS16",autocommit=True)
中一样使用pyodbc来访问/读取read_sql数据()在1.4.47或更低版本中,带警告。我不能也不想用ODBC接口向数据库写入数据。我也不想被降级到使用旧版本的Pandas。我不反对SQLAlchemy。有没有一种方法可以使用我的ODBC DSN,比如使用PVXODBC ODBC驱动程序创建我自己的SQLAlchemy方言?
我几乎可以使用SQLAlchemy与
sql3 = "SELECT ItemCode FROM CI_Item"
engine = create_engine("mssql+pyodbc://user:pwd@SOTAMAS16?autocommit=True")
items= pd.read_sql_query(sql=text(sql3), con=engine.connect())
我得到了这个错误:“pyodbc.错误:('37000','[37000] [ProvideX][ODBC驱动程序]未找到预期的词法元素:FROM(1015)(SQLExecDirectW)')”,这是有意义的,因为数据库不是Microsoft Sequel Server。这是我发现的最接近的方言。
1条答案
按热度按时间hyrbngr71#
为什么不使用
pyodbc
来执行查询并使用pd.DataFrame.from_records
加载结果。类似于: