2017-11-21 28 views
1

이클립스에서 pydev에서 pgadmin4를 사용하여 postgresql로 데이터를 이동하려고합니다. 내 코드 인쇄가 "Error % s % e"입니까? 포스트그레스에서는 testtest123 테이블이 생성되지만 데이터는 거기에 업로드되지 않습니다. 많은 감사합니다! 테이블 testtest123의 경우pydev에서 postgresqll로 데이터 가져 오기

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

import psycopg2 
import sys 
import csv 
from itertools import count 
path = r'C:\Users\sammy\Downloads\E0.csv' 
with open(path, "r") as csvfile: 
    readCSV = csv.reader(csvfile, delimiter=",") 
    for row in readCSV: 
      new_data = [ row[19]] 
      print (new_data) 

con = None 

try: 
    con = psycopg2.connect("host='localhost' dbname='football' user='postgres' password='XXX'") 
    cur = con.cursor() 
    cur.execute("CREATE TABLE testtest123 (HY INTEGER PRIMARY KEY)") 
    cur.execute("INSERT INTO testtest123(new_data)") 
    cur.execute("SELECT * FROM testtest123;") 
    con.commit() 
except psycopg2.DatabaseError as e: 
    if con: 
     con.rollback() 

    print ("Error %s % e") 
    sys.exit(1) 

finally: 
    if con: 
     con.close() 

print(" ".join(row)) 
out=open("new_data.csv", "w") 
output = csv.writer(out) 

for row in new_data: 
    output.writerow(row) 

out.close() 

답변

0

이미 포스트 그레스는 늘 다시 작성 존재한다.
try/except 블록에 여러 개의 문장을 쓰지 마십시오. 오류를 식별하기가 어렵습니다. 디버깅 목적

그럴 수이 :

import traceback 

# ... your code ... 

con = psycopg2.connect("host='localhost' dbname='football' user='postgres' password='XXX'") 
cur = con.cursor() 

try: 
    cur.execute("CREATE TABLE testtest123 (HY INTEGER PRIMARY KEY)") 
    cur.execute("INSERT INTO testtest123(new_data)") 
    cur.execute("SELECT * FROM testtest123;") 
    con.commit() 
except: 
    print ("Error:") 
    traceback.print_exc() 
    con.rollback() 
    sys.exit(1) 
finally: 
    if con: 
     con.close()