gpt4 book ai didi

sqlite - BIGINT 自动递增是否适用于带有 sqlite 的 SQLAlchemy?

转载 作者:IT王子 更新时间:2023-10-29 06:19:55 26 4
gpt4 key购买 nike

我正在尝试使用 SQLAlchemy 声明一个表。我想在表中包含一个 BIGINT 自动递增主键。这似乎不适用于 sqlite 作为数据库后端。另一方面,让 INTEGER 自动递增主键工作得很好。

我读到 sqlite 的 ROWID 是一个带符号的 bigint。但是有没有办法让 BIGINT 自动递增字段?这样我就可以交换后端而不用担心数据库的特定问题(假设 MySQL 和 Postgres 支持 bigint 自动递增字段)。

谢谢。

最佳答案

对于通过 Google 到达此处并且只需要解决方案的其他人,我编写了以下代码:

# SQLAlchemy does not map BigInt to Int by default on the sqlite dialect.
# It should, but it doesnt.
from sqlalchemy import BigInteger
from sqlalchemy.dialects import postgresql, mysql, sqlite

BigIntegerType = BigInteger()
BigIntegerType = BigIntegerType.with_variant(postgresql.BIGINT(), 'postgresql')
BigIntegerType = BigIntegerType.with_variant(mysql.BIGINT(), 'mysql')
BigIntegerType = BigIntegerType.with_variant(sqlite.INTEGER(), 'sqlite')

这将允许您在数据库上使用 BIGINT,并在运行单元测试时使用 INT。

关于sqlite - BIGINT 自动递增是否适用于带有 sqlite 的 SQLAlchemy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18835740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com