【问题标题】:Default value doesn't work in sqlalchemy automap默认值在 sqlalchemy 自动映射中不起作用
【发布时间】: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


【解决方案1】:

这是 SQLAlchemy 1.3.20(和更早版本)+ MariaDB 的问题。在这里解决:

https://github.com/sqlalchemy/sqlalchemy/issues/5744

【讨论】:

  • 是的,这是我的问题。 :)
猜你喜欢
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多