背景:
我目前正在开发的应用程序正在从 SQLite3 过渡到 PostgreSQL。所有数据都已成功迁移,使用.dump
来自当前数据库的,更改所有类型的表
CREATE TABLE foo (
id INTEGER NOT NULL,
bar INTEGER,
...
PRIMARY KEY (id),
FOREIGN KEY(bar) REFERENCES foobar (id),
...
);
至
CREATE TABLE foo (
id SERIAL NOT NULL,
bar INTEGER,
...
PRIMARY KEY (id),
FOREIGN KEY(bar) REFERENCES foobar (id) DEFERRABLE,
...
);
和SET CONSTRAINTS ALL DEFERRED;
。
由于我使用的是 SQLAlchemy,因此我希望从那时起事情会顺利进行,当然在更改engine
. 但问题似乎在于主键自动递增到INSERT
.
比如说foo
,我目前遇到问题的表有 7500 多行,但设置了序列foo_id_seq
(current value
因为5
我已经尝试了五次插入,但都失败了)。
问题:
所以现在我的问题是,如果没有id
在INSERT
语句中明确提供 , 我怎样才能让 Postgres 自动为该id
字段分配一个唯一值 if foo
?或者更具体地说,序列是否为它返回一个唯一值?
糖:
通过 SQLAlchemy 界面实现所有这些。
环境细节:
- 蟒蛇2.6
- SQLAlchemy 8.2
- PostgreSQL 9.2
- psycopg2 - 2.5.1 (dt dec pq3 ext)
PS:如果有人为这个问题找到更合适的标题,请编辑它。