我试图让程序在尝试向不存在的列中插入值时不会崩溃(首先发生这种情况的原因是因为它插入的列名来自值在另一个可能包含拼写错误的表格中显示为红色)。
如果列不存在,如何跳过 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/