我根据以下代码成功提取了表名:-
from sqlalchemy import create_engine
engine = create_engine('mssql+pyodbc://[database]/[table]?driver=SQL+Server')
connection = engine.connect()
engine.table_names()
由于连接成功,所以我尝试将熊猫数据框加载到数据库中。
df.to_sql('table_all', engine)
以上代码失败,错误为'Operand type clash: numeric is incompatible with text'
我发现我的数据框中可能存在错误加载的字段。
问题是,当我再次运行create_engine
代码时,返回的列表为空,尽管连接字符串未更改或返回任何错误并且数据库不为空,但没有返回表名
我在同事的机器上测试了没有df.to_sql
的完全相同的代码,并且工作正常。连接字符串保持不变,如果直接访问SQL Management Studio,则可以查看表甚至进行查询。使用Windows身份验证建立连接。