gpt4 book ai didi

python - SQLAlchemy 无法自动加载 mssql 临时表

转载 作者:行者123 更新时间:2023-12-03 23:04:55 26 4
gpt4 key购买 nike

我无法连接到使用 SQLAlchemy 在 SQL 服务器上创建的临时表。
我连接到服务器:

engine = create_engine(URL, poolclass=StaticPool)
我用来自 Pandas 数据帧的数据填充临时表:
df_tmp.to_sql('#table_test', con=engine)
该表存在于服务器上:
res = engine.execute('SELECT * FROM tempdb..#table_test')
print(res)
它返回我的数据元组列表。但是当我尝试创建一个 SQLAlchemy 表时它失败了 NoSuchTableError :
from sqlalchemy import create_engine, MetaData, Table
metadata = MetaData(engine)
metadata.create_all()
table = Table('#table_test', metadata, autoload=True, autoload_with=engine)
我也试过这个,它给出了同样的错误:
table = Table('tempdb..#table_test', metadata, autoload=True, autoload_with=engine)
而且我还尝试使用 SQL 命令创建一个空白表,当我尝试使用 SQLAlchemy 读取它时会出现相同的错误:
engine.execute('CREATE TABLE #table_test (id_number INT, name TEXT)')
SQLAlchemy 是否支持临时表?如果是这样,这里出了什么问题?如果可能,我希望将临时表作为 sqlalchemy.schema.Table 对象,因为它适合我的所有其他代码。

最佳答案

(回复:对问题的评论)
实际上,这是SQLAlchemy 的mssql 的当前机制的限制。方言检查表的存在。它查询 INFORMATION_SCHEMA.TABLES对于当前目录(数据库),和 #temp表格不会出现在该 View 中。如果我们USE tempdb,它们确实出现了——以一种时尚,并以一种不是特别有用的方式出现。然后查询INFORMATION_SCHEMA.TABLES从那里。
现在,我创建了一个 GitHub 问题 here看看我们是否可以改进这一点。
更新 2020-09-01
上述 GitHub 问题的更改已合并到 SQLAlchemy 的 master 分支中,并将包含在 1.4 版本中。如果您想在 1.4 正式发布之前利用此功能,您可以通过以下方式安装 SQLAlchemy
pip 安装 git+https://github.com/sqlalchemy/sqlalchemy.git

关于python - SQLAlchemy 无法自动加载 mssql 临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63305154/

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