SQL Alchemy 不执行查询

问题描述 投票:0回答:1

我正在使用 SQLAlchemy 在 SQL Server 中运行查询。 该查询应该创建一个表。 下面的示例旨在让您轻松重现。 它不包含我使用的实际查询。

如果我运行以下代码,则不会创建任何表。不会返回任何类型的错误或消息。 (请假设 URL_OBJECT 已正确创建)

from sqlalchemy import create_engine

engine = create_engine(URL_OBJECT, fast_executemany=True)

with engine.connect() as connection:
    connection.execute("Select 1 as an_integer into database.schema.test_table")

--> 如果表“test_table”已经存在,我会收到一条错误消息,告诉我该表已经存在。

相反,以下方法有效:

from sqlalchemy import create_engine

engine = create_engine(URL_OBJECT, fast_executemany=True)

with engine.connect() as connection:
    print(connection.execute("Select 1").fetchone())

返回:(1,)

这个也做了它应该做的事情。

from sqlalchemy import create_engine

engine = create_engine(URL_OBJECT, fast_executemany=True)

with engine.connect() as connection:
    print(connection.execute("Select * datebase.schema.table_existing_in_database").fetchone())

返回:该表的第一行数据。

为什么我的建表代码没有执行,而 Select 语句却执行了?

python sql-server sqlalchemy
1个回答
0
投票

您需要提交,否则默认情况下每个事务都会回滚。

参见:随心所欲

with engine.connect() as connection:
    connection.execute("Select 1 as an_integer into database.schema.test_table")
    connection.commit()

您可以通过设置

echo=True
中的
create_engine()
来获取更多日志信息。如果提交不能解决这个问题,也许可以发布此示例中的信息。

您还应该将来自

text()
的 sql 语句包装在
sqlalchemy.sql
中。

© www.soinside.com 2019 - 2024. All rights reserved.