【发布时间】:2020-09-15 14:41:54
【问题描述】:
我正在使用带有 psycopg2 的 PostgreSQL 和 SQLAlchemy 开发 Flask 应用程序。我在 Debian Bullseye/sid 上进行开发,并在 Ubuntu 18.04.4 LTS 上运行了一个测试网站。最近(我很遗憾我无法确定更新),我无法在本地机器上的烧瓶外壳中向数据库提交任何内容;每次尝试都会在主键表 ID 上出现 NotNullViolation 失败。以前一直是这样处理的。以下是错误示例:
>>> db.session.commit()
Traceback (most recent call last):
File "[...]DandyLion/.venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1283, in _execute_context [...]
sqlalchemy.exc.IntegrityError: (psycopg2.errors.NotNullViolation) null value in column "id" violates not-null constraint
DETAIL: Failing row contains (null, 1, Resolve database id problem, null_id_problem, null, null, 2020-05-28 08:01:00.184953, null, 2020-05-30 17:00:00, [...]).
[SQL: INSERT INTO tasks (user_id, title, slug, [...]) RETURNING tasks.id]
数据库设置如下:
app.config.from_object(Config)
db = SQLAlchemy(app)
我承认对实现细节一无所知,但请注意回溯中的 SQL 语句表明应该返回 tasks.id。以前一直都是这样。
以下是(工作)服务器和本地设置上的版本:
蟒蛇:3.8.3、3.6.8 psycopg2:2.8.4、2.8.4 sqlalchemy:1.3.12、1.3.17 PostgresSQL:10.12、12.3我最初调查了 psycopg2,在本地机器上更改了我的 Pipfile 中的版本。为了进一步调查,我将不胜感激对最可能的故障点的任何见解。有人可以帮忙吗?
【问题讨论】:
标签: python flask sqlalchemy psycopg2