2014-05-09 84 views
-2

我在蟒蛇開始,並希望寫這個腳本插入來自CSV數據到PostgreSQL表如何解決這個錯誤蟒蛇

import csv 
import psycopg2 
conn_string="dbname='Training' 
user='admin' password='admin' " 
conn=psycopg2.connect(conn_string) 
cursor=conn.cursor() print "Connected!\n" 

with open('C:\Users\Mostafa\Downloads\New folder\product.product_.csv', 'rb') as f: 
reader = csv.reader(f) 
for row in reader: 
print row 
Query="insert into product_template (name) VALUES ('"+str(row)+"') RETURNED id" 
cursor.excute(Query) 
conn.commit() 
print "Done!\n" 

,當我嘗試運行這段代碼 得到這個錯誤

Traceback (most recent call last): File "D:\Code\Java\Import\src\CSV\__init__.py", line 19, in <module> 
    cursor.excute(Query) AttributeError: 'psycopg2._psycopg.cursor' object has no attribute 'excute' 

任何想法來解決這個問題。

+0

爲什麼所有的downvotes此用戶是自主招生新的Python和他代表的長相?新的SO。問題對任何具有任何編程經驗的人來說都是顯而易見的,但這並不會造成問題。他原來的格式是好的,這比許多首次海報可以說的更多。從我+1抵消所有的消極情緒。 – Patrick

+0

也許downvotes是建議仔細看看錯誤信息。夠公平的,他們可能在某個時候是神祕的。這個很直接,看着它的最新單詞:) – Vince

+0

@Vince:是的,但可以用一個措辭良好的評論來指出,而不是用沒有信息的降價來詆譭新手。根據我的經驗,在要求投票時要求發表評論;不這樣做在這種情況下是不好的禮節(沒有人留下任何評論)。 – Patrick

回答

3

我從來沒有使用Python,但它看起來像你在調用方法「執行」有一個錯字。

+2

這可能是正確的答案,那麼爲什麼會有人倒退呢? –

1

回溯信息是關於代碼中某處出錯的信息,特別是第19行。違規聲明是cursor.excute(Query),顯而易見的錯誤是您應該調用​​函數,因此是一個簡單的錯字。

代碼有幾個問題,但:

  1. INSERT語句有一個可選的RETURNING條款,如您使用不RETURNED
  2. 你似乎每行只有一個字符串,但如果你有更多的話,你應該小心CSV格式,因爲它是靈活的。儘管名稱,分隔符也可能是tab字符或分號';'甚至別的東西。您使用CSV的方式要求分隔符是逗號',',因爲這是PG在INSERT聲明中所期望的。
  3. 引用字符串或不存在也可能是一個問題。 PG默認使用單引號('),但它也會引入雙引號(「)。還要注意嵌入式引號的問題(例如,」不要「,」不能「,」我朋友的狗「)。在你的情況下,文件中的字符串顯然沒有被引用,你可以通過使用PG內部quote_string()函數來解決嵌入的引號,該函數將雙引號('')嵌入引號(並執行其他有用的東西,如防止SQL 。步噴射)

你的代碼的查詢行應該看起來有點像這樣:

Query="INSERT INTO product_template (name) VALUES (quote_string("+str(row)+")) RETURNING id" 
+0

@ user3618730:quote_string需要一個字符串參數,並且您有一個方括號([)。但我真的認爲你應該花一些時間來學習編程基礎知識。您的帖子上的評論 - 即將被刪除 - 都指向這個方向。 – Patrick

+0

THX所有 @patrick 我做你所寫的,並得到這個錯誤 [回溯(最近通話最後一個): 文件 「d:\代碼\的Java \進口的\ src \ CSV \ __ init__.py」線19,在 cursor.execute(查詢) psycopg2.ProgrammingError:在語法錯誤或接近 「[」 LINE 1:... duct_product(name_template)VALUES(quote_string([ '服務' ...] 我沒有任何想法解決這個問題。 – user3618730

+0

我是python中的新成員,這個括號來自csv文件 – user3618730