我有一个mysql数据库,我在其中定义了一个表:
CREATE TABLE IF NOT EXISTS tblModel (
model_id int NOT NULL AUTO_INCREMENT,
model_file varchar(50) NOT NULL,
model_name varchar(50) NOT NULL,
model_descrip varchar(200) NOT NULL,
target_index char(6) NOT NULL,
training_days int NOT NULL,
trading_days int NOT NULL,
PRIMARY KEY(model_id));
奇怪的是,我注意到虽然 mysql 文档说 int 确实是 int(4),但我看到 int 字段实际上是作为 int(11) 创建的。根据文档,这有点令人不安,因为似乎没有遵循我的指示。
当我使用 mysqldb.database_connection.cursor 将此表查询到 python 中时,我看到 int 正在通过 longs - 这并不奇怪。
因此,我的问题是三重的(按照对我来说越来越重要的顺序):
1) 知道为什么 int 被创建为 int(11) 吗?
2) 此表中的 int 字段将包含序列号和天数 - 分配给 long 的空间几乎没有必要。我应该关心浪费的空间吗?
3)假设我坚持使用 int(11)s (其他表有外键,打破和重新创建所有这些有点痛苦),有没有比对 int 进行显式转换更好的解决方案cur.fetchall() 或 cur.fetchone() 返回?