如何修改SQLObject创建的MySQL表中id列的数据类型为bigint
如何在SQLObject中将MySQL表的id列改为bigint类型?
要将SQLObject生成的MySQL表的id列从默认的int改为bigint,你之前使用字符串'bigint'赋值给idType的写法无效,正确的做法是使用SQLObject提供的类型类或指定数据库原生大写类型字符串。
方法一:使用BigIntCol类型(推荐)
导入BigIntCol并在sqlmeta类中指定idType为该类型的实例,这种方式能更好地适配SQLObject的类型系统:
from sqlobject import SQLObject, StringCol, IntCol, BigIntCol class PersonThree(SQLObject): class sqlmeta: idType = BigIntCol() firstname = StringCol(length=50) lastname = StringCol(length=50) age = IntCol()
生成的MySQL表中,id列会被创建为BIGINT AUTO_INCREMENT类型。
方法二:使用数据库原生类型字符串
如果不想导入BigIntCol,也可以直接指定MySQL原生的大写类型字符串:
from sqlobject import SQLObject, StringCol, IntCol class PersonThree(SQLObject): class sqlmeta: idType = 'BIGINT' firstname = StringCol(length=50) lastname = StringCol(length=50) age = IntCol()
额外说明
- 确保SQLObject的连接配置正确指向MySQL数据库(例如使用
mysql://user:password@host/database格式的连接字符串)。 - 若表已提前创建,修改
idType后需要手动执行SQL语句迁移表结构:ALTER TABLE person_three MODIFY COLUMN id BIGINT AUTO_INCREMENT;
内容的提问来源于stack exchange,提问作者Meet Gujrathi
相关产品推荐
相关产品推荐

