簡體   English   中英

從pydev導入數據到postgresqll

[英]import data from pydev to postgresqll

我正在嘗試使用pgadmin4將數據從Eclipse上的pydev遷移到postgresql。 為什么我的代碼打印“錯誤%s%e”? 在postgres中,正在創建testtest123表,但是沒有將數據上傳到那里。 非常感謝!

#!/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()

如果表testtest123已經存在,postgres將不會再次創建它。
不要將多個語句包裝在一個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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM