Postgresql数据库错误:列不存在

2024-10-01 00:32:25 发布

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

我通过python使用Postrgesql,但在下面的插入中出现错误,声称“column”\ufeff61356169“不存在”

c_id = "\ufeff61356169"
chunk = "engine"

query = f"""
    INSERT INTO company_chunks(company_id, chunk)
    VALUES(`{c_id}`, `{chunk}`);
    """
c.execute(query)

>>>
DatabaseError: {'S': 'ERROR', 'V': 'ERROR', 'C': '42703', 'M': 'column "\ufeff61356169" does not exist', 'P': '88', 'F': 'parse_relation.c', 'L': '3514', 'R': 'errorMissingColumn'}

一个关键注释:“\ufeff61356169”是要插入到列中的值。所以这个错误使我困惑。它混淆了应该接收插入的列的插入值。有什么想法吗

为了验证其他一切是否正常,我确保检查表是否已成功创建

query = """
SELECT column_name 
FROM information_schema.columns 
WHERE table_name = 'company_chunks';
"""
c.execute(query)
c.fetchall()

>>>
(['company_id'], ['chunk'])

所以这个表确实存在,并且它有一些列,我正在尝试插入这些列。我哪里出了问题

顺便说一句,我正在通过云SQL Python连接器连接到这个存储在GCP中的数据库。但是,这个连接器能够创建表,所以我认为问题是特定于python语法和/或Postgres的

编辑:为了理解此表的外观,下面是创建查询

query= """
CREATE TABLE company_chunks 
    (
    company_id    VARCHAR(25)    NOT NULL,
    chunk    VARCHAR(100)    NOT NULL
    );
"""
c.execute(query)
conn.commit()

Tags: nameidexecute错误notcolumnerrorquery
1条回答
网友
1楼 · 发布于 2024-10-01 00:32:25

最好使用%s占位符来执行此操作:

sql = "INSERT INTO company_chunks(company_id, chunk) VALUES (%s, %s)"
var = (c_id,chunk)
mycursor.execute(sql,var)

相关问题 更多 >