2

トピックとして、これはコードであり、エラーメッセージはありませんが、データは挿入されませんでした。これは私のコードです、そして誰かがそれの何が悪いのか教えてもらえますか?

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()
4

1 に答える 1

6

@a_horse_with_no_nameがほのめかしているように、PostgreSQLデータベース接続を閉じていますが、最初にトランザクションをコミットしていません。

まだ開いているトランザクションがない場合、psycopg2はトランザクションを開きます。作業が終了したら、このトランザクションをコミットする必要があります。

トランザクションを明示的にコミットしない限り、接続を閉じると、実行されたすべての作業がロールバックされます。

con.commit()最後のコピーコマンドの後で試してください。

于 2012-12-14T00:31:02.763 に答える