解决 SQLAlchemy 中使用 sqlite 时 BigInteger 不支持 AUTOINCREMENT 的问题

默认情况下,在 SQLAlchemy 中使用 sqlite 作为数据库时, BigInteger 不支持自动增长(AUTOINCREMENT),插入数据时会报如下错误:

Query Error: AUTOINCREMENT is only allowed on an INTEGER PRIMARY KEY Unable to execute statement

可以通过使用 compilessqlite 下的 BigInteger 做特殊处理,让它实际上执行的是 Integer 相关操作:

from sqlalchemy import BigInteger
from sqlalchemy.ext.compiler import compiles


@compiles(BigInteger, 'sqlite')
def bi_c(element, compiler, **kw):
    return "INTEGER"

Comments