【发布时间】:2020-12-04 01:12:09
【问题描述】:
假设我有表 main_table 与列:
id (AUTO_INCREMENT), first (int), value1 (double with default=0), value2 (double)
使用代码
engine = sqlalchemy.create_engine(db_connect)
session = Session(engine)
base = automap_base()
base.prepare(engine, reflect=True)
table = getattr(base.classes, fact_table)
kwargs = {'first': 200016, 'value2': 1.0}
entry = table(**kwargs)
session.add(entry)
session.commit()
我收到一个错误{"error": 500, "message": "(pymysql.err.IntegrityError) (1048, \"Column 'value1' cannot be null\")
当value1 不接受null 值时会发生这种情况。
我想忽略这一点并在所有 value1 不是强制性的(具有默认值)之后添加条目。
SHOW CREATE TABLE main_table;:
CREATE TABLE `main_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first` int(11) NOT NULL,
`value1` double(22,6) NOT NULL DEFAULT 0.000000,
`value2` double(22,6) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=200000 DEFAULT CHARSET=utf8
【问题讨论】:
-
如果您认为这是自动地图的缺陷,请打开GitHub issue。
-
@snakecharmerb 当然我忘记了最重要的最后一行。
session.commit()。我添加了它。value1不应该接受null。 -
我有 Mariadb 10.5.5 和 Python 3.8,我使用
mysql+pymysql(db_connect)
标签: python mysql sqlalchemy