首页 > 解决方案 > 如何在 psycopg 中使用 Postgres 自动增量,使用 DEFAULT 时抛出异常

问题描述

使用 Python/ psycopg,什么 SQL 语句可以使用主键/id 字段的自动递增功能?

当我使用DEFAULT作为占位符时,我得到:

Exception in Class ==> LoadDatasource column "DEFAULT" does not exist
LINE 1: INSERT INTO SOURCE VALUES ("DEFAULT","value", "value", ...)

我试图通过不指定列名来使用“盲插入”,如下所示:

INSERT into <table_name> values();

我使用“盲插”的原因。我已经生成了一个与数据库列的顺序匹配的 CSV,并且只想插入 CSV(但我需要以编程方式执行此操作,因为我正在清理,沿途操作一些数据),但值在命令。

CSV 中唯一缺少的值是主键/id 列,我正在尝试使用“DEFAULT”,以便让 Postgres 弄清楚这一点。

该表是通过以下方式创建的:

CREATE TABLE if not exists sources
(
    id serial PRIMARY KEY,
    ...

标签: pythonpostgresqlprimary-keypsycopg2

解决方案


DEFAULT不应该被引用。它是 Postgres 中的关键字。

另一个建议是不要使用盲插入,这样你就可以定义 CSV 文件覆盖的列,省略自动增量列,这样你就不需要使用“默认”,Postgres 会自动找出要做什么与您的专栏


推荐阅读