2012-12-05 19 views
34

मैं postgres के बवंडर से JSON डेटा डालने की आवश्यकता डालने नहीं है, इसलिए यहां इस तरह से परीक्षण है:psycopg2 वास्तव में डेटा

from psycopg2 import connect 

conn = connect("user='pguser' host='localhost' dbname='pgdb' password='pgpass'") 
cursor = conn.cursor() 

data = '[{"id":"sdf","name":"wqe","author":"vb"}]' 

for row in eval(data): 
    print row 
    cursor.execute("""INSERT INTO books(id,name,author) VALUES('%s','%s','%s')""" % \ 
     (row['id'], row['name'], row['author']) 
) 

>>> cursor.execute("SELECT * FROM books") 
>>> cursor.fetchall() 
[('sdf', 'wqe', 'vb')] 
>>> 
$> psql -d pgdb -U pguser -W 
Password for user pguser: 
psql (9.1.6) 
Type "help" for help. 

pgdb=> select * from books; 
id | name | author 
----+------+-------- 
(0 rows) 

आप अजगर खोल में select करने के बाद देख सकते हैं, वहाँ कुछ डेटा है, लेकिन psql में 0 पंक्तियां हैं! मैं गलत क्या कर सकता हूँ?

पायथन 2.7.2+

+0

डाटाबेस पर सभी प्राइवेट्स को पीजीडीबी पर पीजीडीबी प्रदान करने के लिए अनुदान प्रदान करना; और hba.conf में विश्वास करने के लिए सहकर्मी को बदलना – juk

+2

मदद नहीं करता है, वे दोनों समस्याएं हल करने का प्रयास कर रहे हैं जो आपके पास नहीं है। यदि उनमें से कोई भी समस्याएं हैं तो आपको अनुमति त्रुटियां मिल रही हैं। –

उत्तर

103

आपने लेनदेन नहीं किया है।

साइकोप 2 स्वचालित रूप से एक लेनदेन खोलता है, और आपको डेटा को अन्य सत्रों में दृश्यमान बनाने के लिए प्रतिबद्ध होना चाहिए।

the psycopg2 FAQ और connection.commit() method देखें।

+8

कुछ जवाब 100 साल के वोट के लायक हैं - यहां तक ​​कि 4 वर्षों के बाद भी। यह उनमें से एक है! :) –

+3

ट्यूटोरियल और दस्तावेज़ इस बारे में कुछ भी नहीं कहते हैं, धन्यवाद! – rjurney

+0

@rjurney कृपया इसे जोड़ने के लिए psycopg2 रिपॉजिटरी को एक पुल अनुरोध सबमिट करें :) सबसे तार्किक स्थान पर आप इसे दस्तावेज़ों में ढूंढने की उम्मीद करेंगे। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^