【发布时间】:2012-09-24 20:01:56
【问题描述】:
我有一个 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(其他表有外键,打破并重新创建所有这些有点痛苦),有没有比进行显式转换更好的解决方案到 cur.fetchall() 或 cur.fetchone() 的 int 返回?
【问题讨论】:
标签: types mysql-python