我无法弄清楚如何使用带有MySQL 5的SqlAlchemy 0.6.0在UNIQUE列上设置AUTO_INCREMENT.
我知道这可以在MySQL中完成,但我不想分发额外的.sql脚本来为我的应用程序设置数据库.我希望SqlAlchemy从Python中构建模式.
到目前为止,我发现有两种方法可以使列成为SqlAlchemy中的自动递增类型列:
sqlalchemy.types.Integer
表中第一列在其定义中设置primary_key=True
和未autoincrement=False
设置的列.
INDEX(m,n)
为列添加属性.SERIAL
列类型.AUTO_INCREMENT
属性添加到列.sqlalchemy.types.Integer
列,并以sqlalchemy.schema.Sequence
对象作为参数进行实例化.
INDEX(m,n)
为列添加属性.SERIAL
列类型.所以我不能使用#1,因为我想要auto_increment的列不在主键中(也不应该).我不能使用#2,因为它不适用于MySQL.
基本上,我定义表的代码如下所示:
from sqlalchemy import Column
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.schema import Sequence
from sqlalchemy.types import Integer, Unicode
Base = declarative_base()
class Person(Base):
__tablename__ = "person"
id = Column(Integer, nullable=False, unique=True)
first_name = Column(Unicode(100), nullable=False, primary_key=True)
last_name = Column(Unicode(100), nullable=False, primary_key=True)
Run Code Online (Sandbox Code Playgroud)
并生成此SQL来创建表:
CREATE TABLE person ( …
Run Code Online (Sandbox Code Playgroud)