不能与Postgres&amp ;;“复制”蟒蛇

时间:2012-12-13 21:05:41

标签: python postgresql import copy psycopg2

作为主题,这是代码,没有错误消息,但数据没有插入。 这是我的代码,任何人都可以告诉我它有什么问题吗?

import psycopg2
import sys
import os
import glob 
import csv

#open the csv folder
dictfile='******'
os.chdir(dictfile)
total=[]
for file in glob.glob("*.csv"):
    total.append(file)
con = None
try: 
    con = psycopg2.connect(host='localhost',database='*****',user='postgres', password='*****') 
    cur = con.cursor()
    for i in range(0,1):   
        filename='/Users/Shared'+'/'+total[0]
        print filename
        #better move all files into shared folder
        x="copy public.crossref_sample from "+ "'"+filename+"'"+" DELIMITERS ',' CSV"
        print x
        cur.execute(x)  
except psycopg2.DatabaseError, e:
    print 'Error %s' % e    
    sys.exit(1) 
finally:
    if con:
        con.close()

1 个答案:

答案 0 :(得分:4)

正如@a_horse_with_no_name所提到的,你正在关闭PostgreSQL数据库连接,但你没有先提交事务。

如果没有已打开的事件,psycopg2会为您打开一个事务。它希望您在完成工作后提交此事务。

除非您显式提交事务,否则关闭连接将回滚任何已完成的工作。

在最后一个复制命令后尝试con.commit()