首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SqlAlchemy:当func.lower(列)时忽略索引postgresql_ops

SqlAlchemy:当func.lower(列)时忽略索引postgresql_ops
EN

Stack Overflow用户
提问于 2017-04-24 16:08:12
回答 1查看 435关注 0票数 0

这是代码:

代码语言:javascript
运行
复制
from sqlalchemy import Table, Column, Index, String, MetaData, func, create_engine

md = MetaData()
tbl = Table('t1', md, Column('col1', String()))
idx = Index(
    'idx1',
    func.lower(tbl.c.col1),
    postgresql_ops={'col1': 'text_pattern_ops'},
)

e = create_engine("postgresql://postgres:postgres@localhost/test", echo=True)
with e.connect() as c:
    md.create_all(c)

输出

代码语言:javascript
运行
复制
 Column |       Type        | Modifiers 
--------+-------------------+-----------
 col1   | character varying | 

Indexes:
    "idx1" btree (lower(col1::text))  # NO text_pattern_ops!!!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-24 22:45:44

根据文档,您需要在表达式上添加一个标签:

代码语言:javascript
运行
复制
idx = Index(
    'idx1',
    func.lower(tbl.c.col1).label('lower_col1'),
    postgresql_ops={'lower_col1': 'text_pattern_ops'},
)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43592955

复制
相关文章

相似问题

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