Sql server pandas.DataFrame.to_sql插入数据,但不';不要提交事务

Sql server pandas.DataFrame.to_sql插入数据,但不';不要提交事务,sql-server,python-3.x,pandas,sqlalchemy,pandas-to-sql,Sql Server,Python 3.x,Pandas,Sqlalchemy,Pandas To Sql,我有一个pandas数据框,我正试图插入MS SQL EXPRESS,如下所示: import pandas as pd import sqlalchemy engine = sqlalchemy.create_engine("mssql+pyodbc://user:password@testodbc") connection = engine.connect() data = {'Host': ['HOST1','HOST2','HOST3','HOST4'], 'Product'

我有一个pandas数据框,我正试图插入MS SQL EXPRESS,如下所示:

import pandas as pd
import sqlalchemy

engine = sqlalchemy.create_engine("mssql+pyodbc://user:password@testodbc")
connection = engine.connect()

data = {'Host': ['HOST1','HOST2','HOST3','HOST4'],
    'Product': ['Apache HTTP 2.2','RedHat 6.9','OpenShift 2','JRE 1.3'],
    'ITBS': ['Infrastructure','Accounting','Operations','Accounting'],
    'Remediation': ['Upgrade','No plan','Decommission','Decommission'],
    'TargetDate': ['2018-12-31','NULL','2019-03-31','2019-06-30']}

df = pd.DataFrame(data)
当我打电话时:

df.to_sql(name='TLMPlans', con=connection, index=False, if_exists='replace')
然后:

print(engine.execute("SELECT * FROM TLMPLans").fetchall())
我可以看到数据,但它实际上没有提交任何事务:

D:\APPS\Python\python.exe 
C:/APPS/DashProjects/dbConnectors/venv/Scripts/readDataFromExcel.py
[('HOST1', 'Apache HTTP 2.2', 'Infrastructure', 'Upgrade', '2018-12-31'), ('HOST2', 'RedHat 6.9', 'Accounting', 'No plan', 'NULL'), ('HOST3', 'OpenShift 2', 'Operations', 'Decommission', '2019-03-31'), ('HOST4', 'JRE 1.3', 'Accounting', 'Decommission', '2019-06-30')]

Process finished with exit code 0

这里说我不必像SQLAlchemy那样承诺:

以下建议不起作用:

我花了整整3个小时在互联网上寻找线索,但我没有得到任何相关的答案,或者我不知道如何提问

任何关于寻找什么的指导都将不胜感激

更新

我能够使用pyodbc连接和完整的insert语句提交更改,但是,带有SQLAlchemy引擎的pandas.DataFrame.to_sql()无法工作。它将数据发送到内存,而不是实际的数据库,不管是否指定了模式


我非常感谢您在这方面的帮助,或者这可能是我需要报告的熊猫问题?

我也有同样的问题,我意识到您需要告诉pyodbc您要使用哪个数据库。对我来说,默认值是master,所以我的数据就在那里

有两种方法可以做到这一点:

connection.execute("USE <dbname>")
在我的例子中,模式是
.dbo
,我认为
.dbo
是默认模式,因此如果您定义一个替代模式,它可能是其他模式


答案中引用了这一点,我花了更长的时间才意识到架构名称应该是什么。

在添加连接后,您可以尝试关闭连接吗?
到\u sql
添加连接。close()不会解决任何问题这里的问题是\u sql函数中的con参数,将其从连接更改为“engine”,它应该work@min2bro选中的,但还是一样,还有其他建议吗?如果我理解正确,我传递的用户凭据具有读/写权限,否则df.to_sql将抛出错误,对吗?这些解决方案有效吗?
df.to_sql(name=<TABELENAME>, conn=connection, schema='<dbname>.dbo')