我有一个 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 那样提交:
Pandas DataFrame.to_sql() 函数是否需要后续的 commit()?
并且以下建议不起作用:
我花了 3 个小时在整个互联网上寻找线索,但我没有得到任何相关的答案,或者我不知道如何提出问题。
任何关于寻找什么的指导将不胜感激。
更新
我可以使用 pyodbc 连接和完整的插入语句提交更改,但是带有 SQLAlchemy 引擎的 pandas.DataFrame.to_sql() 不起作用。无论是否指定了模式,它将数据发送到内存而不是实际的数据库。
我真的很感激这方面的帮助,或者可能是我需要报告的熊猫问题?