使用Alembic在SqlAlchemy中定义索引

 手机用户2502929805 发布于 2023-02-07 14:22

我完全同意这是一个非常基本的问题,可能它在某处有答案,但我不知道怎么找不到它.(我也不是很熟悉SqlAlchemy)

我有这个代码 -

from sqlalchemy import Column, Integer, Text, String, TIMESTAMP, Boolean, \
    UnicodeText
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.schema import Sequence, ForeignKey, Index
from zope.sqlalchemy import ZopeTransactionExtension
import datetime

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
Base = declarative_base()

class Users(Base):
    __tablename__ = "user_table"

    id = Column(Integer, Sequence('idseq'), primary_key = True)
    email = Column(String, unique=True)
    ip_addr = Column(String)
    created_date = Column(TIMESTAMP(timezone=True), default=datetime.datetime.utcnow)
    modified_date = Column(TIMESTAMP(timezone=True), default=datetime.datetime.utcnow)
    #Index('user_index',Users.c.email)

我怎么能够

    在此定义单列索引(例如关于电子邮件)?(Probaby index = True会这样做.如果是这样的话,那么它主要是我失去的下一个点)

    如何在此定义多列索引(例如,在电子邮件和ip_addr上.我使用alembic进行迁移,当我定义类似 - Index('user_index',Users.c.email)[注释行]时在类中的列定义之后,它确实给出了一个错误"NameError:name'Users'未定义")

在alembic的env.py中,除了所有普通线和默认线之外,我有这两行

from tutorial.models import Base
.
.
.
target_metadata = Base.metadata

我的应用名称是教程.如果以某种方式需要它,我使用Pyramid作为框架.和postgres作为数据库.

我再说一遍,这可能是一个非常基本的问题,但我现在无法理解,所以任何帮助都会很棒.

谢谢.

1 个回答
  • 对于我,是的,请使用index=True您的字段定义.

    对于II,只需将Index声明放在类定义之外:

    class Users(Base):
        __tablename__ = "user_table"
    
        id = Column(Integer, Sequence('idseq'), primary_key=True)
        email = Column(String, unique=True)
        ip_addr = Column(String)
        created_date = Column(TIMESTAMP(timezone=True), default=datetime.datetime.utcnow)
        modified_date = Column(TIMESTAMP(timezone=True), default=datetime.datetime.utcnow)
    
    Index('user_index', Users.c.email, Users.c.ip_addr)
    

    2023-02-07 14:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有