4

我想通过 SQLAlchemy 创建列 ID。
SQL看起来像:

CREATE TABLE OBJECT (
    ID INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    NAME VARCHAR(15)
)

或者如何创建具有自动增量字段的表?

Column(autoincrement='auto')

primary_key 的默认值,但不适用于 Firebird。

我将 fdb 添加到 github。
这个字符串 SQL 代码中需要什么,但我不知道如何在 SQLAlchemy 中设置 Column 来使用它。
IBExpert 的屏幕截图显示使用“默认生成为身份”后创建的内容。这与简单的生成器不同。

4

1 回答 1

1

这个 postgresql 解决方法可能有效: https ://docs.sqlalchemy.org/en/13/dialects/postgresql.html

我相信您必须通过更改编译方言来修改 firebird 的示例,如下所示:

from sqlalchemy import MetaData
from sqlalchemy.schema import CreateColumn
from sqlalchemy.ext.compiler import compiles


@compiles(CreateColumn, 'firebird')
def use_identity(element, compiler, **kw):
    text = compiler.visit_create_column(element, **kw)
    text = text.replace("SERIAL", "INT GENERATED BY DEFAULT AS IDENTITY")
    return text

m = MetaData()
t = Table(
    't', m,
    Column('id', Integer, primary_key=True),
    Column('data', String)
)
于 2019-10-05T22:03:07.683 回答