我完全同意这是一个非常基本的问题,可能在某个地方有它的答案,但我不知何故找不到它。(我对 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' is not defined”)
在 alembic 的 env.py 中,除了所有正常和默认行之外,我还有这两行
from tutorial.models import Base
.
.
.
target_metadata = Base.metadata
我的应用名称是教程。如果以某种方式需要它,我将使用 Pyramid 作为框架。和 postgres 作为数据库。
我再说一遍,这可能是一个非常基本的问题,但我现在无法弄清楚,所以任何帮助都会很棒。
谢谢。