python - 如何检查表中是否存在列,如果不存在则不插入

标签 python postgresql psycopg2

我试图让程序在尝试向不存在的列中插入值时不会崩溃(首先发生这种情况的原因是因为它插入的列名来自值在另一个可能包含拼写错误的表格中显示为红色)。

如果列不存在,如何跳过 INSERT

for row in cur2:
            if row[1] > specialLimit:
               try:
                 cur.execute("INSERT INTO {}.{} (item_id) VALUES ('{}')".format(schema, table, row[0]))
                 con.commit()
               except psycopg2.DatabaseError as e:
                 print('Error: '+e)

这仍然给出错误:

第 1 行:插入 load_primary.item_properties(异国情调)值(...

最佳答案

您可以在发出请求之前运行一个简单的查询:

select exists (
  select 1 from information_schema.columns 
  where table_name ='my_table' 
  and column_name='my_column'
);

这将返回 bool 值,psycopg2 将自动将其转换为 python 的 bool 值。

另一种方法是运行单个查询来一次检查所有列。并且只向存在的数据插入数据。这可能会稍微更有效率。

关于python - 如何检查表中是否存在列,如果不存在则不插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31755543/

相关文章:

postgresql - Postgres 按季度分组

python - (Excel) 访问 CodeModule 时 VBA 崩溃

python - 使用两个数据帧之间的条件语句获取计数的 Pandas 矢量化方法

python - 生成真值表但在 python 中保留一些 undefined variable

postgresql - Postgresql - 没有子查询的jsonb对象减少

javascript - 我如何将现有数据库连接到 sequelize.js?

python -/myapp/数据库错误

django:从 postgres 数据库导入数据时无法适应错误

python - 无法启动 Django 游戏化服务器 - DJANGO_SETTINGS_MODULE

python - QTextEdit 上的滚动条样式(使用自定义图像)