Pylons,SQlite和自动增量领域

Max*_*ank 7 sqlite pylons sqlalchemy auto-increment

嘿! 刚刚开始与Pylons一起使用SQLAlchemy,我的模型看起来像这样:

from sqlalchemy import Column
from sqlalchemy.types import Integer, String

from helloworld.model.meta import Base

class Person(Base):
    __tablename__ = "person"

    id = Column(Integer, primary_key=True)
    name = Column(String(100))
    email = Column(String(100))

    def __init__(self, name='', email=''):
        self.name = name
        self.email = email

    def __repr__(self):
        return "<Person('%s')" % self.name
Run Code Online (Sandbox Code Playgroud)

为了避免sqlite重用可能已被删除的id,我想将AUTOINCREMENT添加到列"id".我查看了sqlalchemy的文档,看到可以发出sqlite_autoincrement.可以在此处找到给出此属性的示例.

sqlite_autoincrement似乎是在创建表本身时发出的,我只是想知道在使用模型的声明式样式时如何提供它.

sco*_*fey 19

尝试在传统(非声明性)数据定义样式中包含一个__table_args__带有要传递给Table构造函数的参数的属性,例如:

class Person(Base):
    __tablename__ = "person"
    __table_args__ = {'sqlite_autoincrement': True}
Run Code Online (Sandbox Code Playgroud)

如果你必须包含几个参数,请使用此表单(dict必须是最后一个):

__table_args__ = (
    Unique('foo'),
    # ...
    {'sqlite_autoincrement': True}
)
Run Code Online (Sandbox Code Playgroud)

从Declarative SQLAlchemy文档的Table配置部分:

Column使用__table_args__class属性指定名称,元数据和映射参数以外的表参数.此属性适用于通常发送到Table构造函数的位置和关键字参数.