gpt4 book ai didi

sql-server - pandas.DataFrame.to_sql 插入数据,但不提交事务

转载 作者:行者123 更新时间:2023-12-04 15:52:10 33 4
gpt4 key购买 nike

我有一个 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

enter image description here

它在这里说我不必像 SQLAlchemy 那样提交:

Does the Pandas DataFrame.to_sql() function require a subsequent commit()?

下面的建议不起作用:

Pandas to_sql doesn't insert any data in my table

我花了 3 个小时在 Internet 上寻找线索,但我没有得到任何相关答案,或者我不知道如何提出问题。

我们将不胜感激任何有关寻找内容的指导。

更新

我可以使用 pyodbc 连接和完整插入语句提交更改,但是 pandas.DataFrame.to_sql() 和 SQLAlchemy 引擎不起作用。它会将数据发送到内存而不是实际的数据库,无论是否指定了模式。

我真的很感激帮助解决这个问题,或者这可能是我需要报告的 panda 问题?

最佳答案

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

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

connection.execute("USE <dbname>")

或者在 df.to_sql() 中定义模式:

df.to_sql(name=<TABELENAME>, conn=connection, schema='<dbname>.dbo')

在我的例子中,模式是 <dbname>.dbo我认为 .dbo是默认的,所以如果你定义一个替代模式,它可能是别的东西

这在 this 中被引用答案,我花了更长的时间才意识到模式名称应该是什么。

关于sql-server - pandas.DataFrame.to_sql 插入数据,但不提交事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53415630/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com