【问题标题】:Postgresql database error: column does not existPostgresql 数据库错误:列不存在
【发布时间】:2021-05-14 15:18:17
【问题描述】:

我正在通过 python 使用 Postrgesql,但在以下插入时出现错误,声称“列“\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'])

所以该表确实存在并且它具有列,我正在尝试对其进行插入。我哪里错了?

顺便说一句,我正在通过 Cloud 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()

【问题讨论】:

    标签: python postgresql google-cloud-platform insert


    【解决方案1】:

    最好使用 %s 占位符:

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

    【讨论】:

    • 做到了!我猜它期待一个元组有效载荷。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2016-11-20
    • 1970-01-01
    相关资源
    最近更新 更多