gpt4 book ai didi

SQLAlchemy 使用包含@DECLARE 本地表的原始 SQL 执行

转载 作者:行者123 更新时间:2023-12-01 11:53:32 27 4
gpt4 key购买 nike

我被卡住了——我有以下带有 SQL alchemy 的 python 脚本,我已经非常成功地将它用于其他几个目的。

import sqlalchemy
from sqlalchemy import MetaData
from sqlalchemy.orm import *

engine = sqlalchemy.create_engine("this line of code would provide credentials to the database")
connection = engine.connect()
session = sessionmaker(bind=engine)
result = connection.execute(sqlquery)

for row in result: print row

虽然最近我发现如果我的“sqlquery”包含@Declare MyTable 语句我会得到错误:

"This result object does not return rows. "
sqlalchemy.exc.ResourceClosedError: This result object does not return rows. It has been closed automatically.

这是我的 SQL 查询,它在 SSMS 中运行良好,但当我尝试使用 SQLAlchemy 执行它时不会执行

DECLARE @USER TABLE
(
UserID INT
, StatsVals INT
)

INSERT INTO @USER (UserID, StatsVals)
SELECT TOP 10 u.UserID
, u.StatsVals
FROM UserProfile u

SELECT * FROM @USER

有谁知道为什么 SQLAlchemy 会给我这个错误?我应该怎么做才能解决这个问题?

最佳答案

当 DBAPI 在游标上执行时,如果存在结果,则需要存在名为 cursor.description 的属性。如果不是,SQLAlchemy 知道没有结果可返回。

在这种情况下,这可能是 DBAPI 的问题,除非这种用法属于游标上“多个结果集”的范畴。 SQLAlchemy 目前还没有对多结果集的直接支持。如果是这种情况,您需要直接使用 DBAPI 游标并调用 .nextset() 来获取结果。您可以通过以下方式获取:

connection = engine.raw_connection()
cursor = connection.cursor()

(关于 cursor.nextset() 如何工作的文档在 http://www.python.org/dev/peps/pep-0249/ )

否则,您真的需要联系 DBAPI 作者,看看您在这里做的事情是否真的可行。我猜这是 pyodbc,即使你没有指定你在哪个后端。如果是这样,您可以通过 http://code.google.com/p/pyodbc/ 联系他们.

关于SQLAlchemy 使用包含@DECLARE 本地表的原始 SQL 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9269900/

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