使用Web2py/Pydal将字段定义为无符号整数

2024-06-16 11:56:03 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以使用无符号整数Field定义web2py模型?如果是,可以如何进行?

底层数据库是MySQL,下面是等效的CREATE TABLE语句

CREATE TABLE `t` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `value` int(11) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
)
;

我做了三次尝试,都没有成功。以下是这些尝试的片段

db.define_table('t', Field('value', 'integer unsigned'))
db.define_table('t', Field('value', 'integer', options=['unsigned']))
db.define_table('t', Field('value', 'integer', options=['UNSIGNED']))

我在web2pypydal文档中都没有提到无符号整数。当然,web2py或pydal都可能不支持无符号整数。我使用的是web2py版本2.20.4-stable+timestamp.2020.05.02.22.03.36、pydal版本20200502.2和MySQL版本5.7.25


Tags: 版本fielddbvaluecreatemysqltable符号
2条回答

我认为您需要在字段上定义自定义的_限定符:

Field('value', 'integer', custom_qualifier='UNSIGNED')

它只是在迁移时附加到字段定义中

这会降低项目的可移植性,因为例如,在PostgreSQL或MSSQL中没有未签名的int

我不认为pydal显式支持无符号整数类型,但只要您不使用pydal进行迁移(即,它不会为您创建一个新的无符号整数列,但它可以处理现有列),只要您只指定type='integer',一切都应该工作

相关问题 更多 >