首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >炼金术with_hint不工作

炼金术with_hint不工作
EN

Stack Overflow用户
提问于 2015-12-30 19:37:08
回答 1查看 1.1K关注 0票数 3

我试图使用Postgresql ONLY关键字从SQLAlchemy表达式生成一个查询:

示例1:使用text()表达式定义表名不起作用(除非我将字符串“仅”作为文本的一部分):

代码语言:javascript
复制
tbl = text('schema.table')  # work with text('ONLY schema.table')
query = select([func.count()]).select_from(tbl).with_hint(tbl,
                                                          'ONLY',
                                                          'postgresql')
print query.compile(bind=engine)

指纹:

代码语言:javascript
复制
SELECT count(*) AS count_1
FROM schema.table

示例2:但是,如果我使用轻量级table表达式,它会这样做:

代码语言:javascript
复制
tbl = table('schema.table')
query = select([func.count()]).select_from(tbl).with_hint(tbl,
                                                          'ONLY',
                                                          'postgresql')
print query.compile(bind=engine)

指纹:

代码语言:javascript
复制
SELECT count(*) AS count_1 
FROM ONLY "schema.table"

但这是不行的,因为名字周围有双引号

现在,请记住,我收到了一个模式限定表名的列表,我希望避免创建TableMetaData对象。

所以,为了澄清我的问题:

示例1:如何使ONLY关键字出现?

示例2:如何正确指定模式?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-03-02 09:02:26

v1.3.18开始,表格接受schema参数。

代码语言:javascript
复制
>>> tbl = sa.table('table', schema='schema')
>>> query = sa.select(sa.func.count()).select_from(tbl).with_hint(tbl, 'ONLY', 'postgresql')
>>> print(query.compile(engine))
SELECT count(*) AS count_1 
FROM ONLY schema."table"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34536068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档