Postgres现有列不存在

2024-06-16 14:28:43 发布

您现在位置:Python中文网/ 问答频道 /正文

下一个问题是数据库查询发送

psycopg2.errors.UndefinedColumn: column "crossroad_id" of relation "api_accidents" does not exist
LINE 1: INSERT INTO api_accidents ("crossroad_id", "datetime_start",...

思前想后,我发现错误是由于引用。在

我有一个用于数据库查询的基类和一些子类,它们对不同的表进行查询。其他的儿童班不间断地工作。下面列出了向数据库发送查询的函数。在

^{pr2}$

在子方法中,我只更改了字段col_names和{},它在其他类中也能完美地工作。在

    query = """INSERT INTO api_accidents ({}) VALUES ({})"""
    col_names = ['crossroad_id', 'datetime_start', 'datetime_stop']

这里的原始查询工作

INSERT INTO api_accidents (сrossroad_id, datetime_start, datetime_stop)
    VALUES (1, current_timestamp, NULL)

但这个不管用

INSERT INTO api_accidents ("сrossroad_id", "datetime_start", "datetime_stop")
    VALUES (1, current_timestamp, NULL)

但是标准的sql.SQL格式进行第二次查询。在

不在查询中手动写入列名就可以解决这个问题吗?在

更新

我又检查了一遍,发现它不依赖于引号。无论是否使用引号,此查询都有效:

INSERT INTO api_accidents (сrossroad_id, datetime_start, datetime_stop)
    VALUES (1, current_timestamp, NULL);

这个根本不管用:

INSERT INTO api_accidents (crossroad_id, datetime_start, datetime_stop)
    VALUES (1, current_timestamp, NULL);

是的,它们完全一样。但博士后不这么认为。在

更新2

最后我发现,当我从information_schema.columns复制列名时,它是有效的。但当我自己输入那个专栏的名字时,它就不起作用了。这取决于什么-我不知道。在


Tags: apiid数据库datetimecurrentstartnulltimestamp