gpt4 book ai didi

python - Python 中的 Sql Server 合并语句

转载 作者:行者123 更新时间:2023-12-01 04:01:25 24 4
gpt4 key购买 nike

我正在将 sqlalchemy/pyodbc 与 MS SQL Server 结合使用,并尝试执行原始 SQL 合并语句。如果我将查询字符串粘贴到 SQL Server Management Studio 中,它可以正常工作,但我似乎无法让它在 Python 中工作。我环顾四周,似乎找不到类似问题的问题。我意识到这很可能是由我的设置特定的问题驱动的,但我希望有人能够提供帮助或至少为我指明正确的方向。最小示例如下:

import sqlalchemy as sa
engine = sa.create_engine('[your engine]')
metadata = sa.MetaData(engine)

t1 = sa.Table('test1', metadata,
sa.Column('id', sa.Integer, primary_key=True, autoincrement=False),
sa.Column('name', sa.String(50)), schema='dbo')
t2 = sa.Table('test2', metadata,
sa.Column('id', sa.Integer, primary_key=True, autoincrement=False),
sa.Column('name', sa.String(50)), schema='dbo')
t1.create()
t2.create()

query = "INSERT INTO dbo.test1 (id, name) VALUES (5, 'someguy')"
engine.execute(query)
mq = """MERGE dbo.test2 AS Target USING dbo.test1 AS Source ON
Target.id = Source.id
WHEN MATCHED THEN
UPDATE SET Target.name = Source.name
WHEN NOT MATCHED BY TARGET THEN
INSERT (id, name) VALUES (Source.id, Source.name);"""
engine.execute(mq)

最佳答案

我也遇到了类似的问题(语句可以在 SSMS 中执行,但在 Python 中运行时什么也不做)。这是我让它工作的方法:

conn = engine.connect()
conn = conn.execution_options(autocommit=True)
conn.execute(stmt)
conn.close()

以 stmt 作为合并语句。

关于python - Python 中的 Sql Server 合并语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36438371/

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