使用Python 2.7和
在[150]中:psycopg2。 版本 Out [150]:“ 2.4.2(dt dec pq3 ext)”
我有一个简单的python脚本,用于处理事务并将数据写入数据库。有时有一个插入违反我的主键。很好,我只希望它忽略该记录并继续愉快地进行下去。我遇到的问题是psycopg2主键错误正在中止整个事务块,并且错误失败后所有插入。这是一个示例错误
ERROR: duplicate key value violates unique constraint "encounter_id_pkey"
DETAIL: Key (encounter_id)=(9012235) already exists.
这是在下一个插入。不违反。
Inserting: 0163168~9024065
ERROR: current transaction is aborted, commands ignored until end of transaction block
每个插入都会重复出现第二个错误。这是一个简化的循环。我正在遍历一个熊猫数据框,但是可能是任何循环。
conn = psycopg2.connect("dbname='XXXX' user='XXXXX' host='XXXX' password='XXXXX'")
cur = conn.cursor()
for i, val in df2.iteritems():
try:
cur = conn.cursor()
cur.execute("""insert into encounter_id_table (
encounter_id,current_date )
values
(%(create_date)s, %(encounter_id)s ) ;""",
'encounter_id':i.split('~')[1],
'create_date': datetime.date.today() })
cur.commit()
cur.close()
except Exception , e:
print 'ERROR:', e[0]
cur.close()
conn.close()
同样,基本思路是妥善处理错误。在皇家海军纳尔逊海军上将的格言中:“该死的演习直接针对他们”。我以为该死的错误直指它们。”我想通过在每个插入上打开一个游标,我将重置事务块。我不想仅由于主键错误而不必重置连接。有什么我只是想念的吗?
在此先感谢您的宝贵时间。
您应该在发生错误时回滚事务。
我try..except..else
在下面的代码中添加了另一种构造,以显示发生异常的确切位置。
try:
cur = conn.cursor()
try:
cur.execute("""insert into encounter_id_table (
encounter_id,current_date )
values
(%(create_date)s, %(encounter_id)s ) ;""",
'encounter_id':i.split('~')[1],
'create_date': datetime.date.today() })
except psycopg2.IntegrityError:
conn.rollback()
else:
conn.commit()
cur.close()
except Exception , e:
print 'ERROR:', e[0]
问题内容: 我在Mac系统上做了一个简单的操作。它安装正确,但是当我尝试使用psycopg2时出现错误: 显示恰到好处。我已经在多个virtualenvs上安装了psycopg2,但这是我第一次看到这样的错误。我尝试卸载并重新安装,结果相同。请帮忙 问题答案: 升级到Mountain Lion后,我遇到了类似的问题。 确保不要按Slack的建议复制libssl。*文件,而是确保它实际上是到库的最新
我为我的项目设置了virtualenv并在何时运行 pip安装psycopg2 我在下面得到一个错误
我正在尝试在MVVM中实现一个ViewModel,提供可观察的东西作为“输入流”,提供观察者作为“输出流”供视图绑定。
null null null null null
问题内容: 我正在运行一个基于python flask的小型Web服务,我想在其中执行一个小型MySQL查询。当我获得SQL查询的有效输入时,一切都按预期工作,并且我获得了正确的值。但是,如果该值未存储在数据库中,则会收到一个 我试图利用错误处理自己,并在我的项目中使用此代码,但看来这无法正常工作。 基本上,我只想返回一个值,当一切都正常工作时,如果最好不要在服务器上显示错误消息,则不返回任何值。
我想通过psycopg2将csv文件导入PostgreSQL。但是,csv文件列名包含特殊字符。我可以用这些代码行通过psycopg2创建一个表。 当我想使用copy_from函数导入带有这些代码行的csv文件时。 它总是返回错误psycopg2。错误。SyntaxError:在“/”处或附近出现语法错误 我尝试在特殊字符之前使用反斜杠,或者将特殊列名放在双引号中,但它仍然返回相同的错误消息。如何