2011-01-13 8 views
39

में Postgres क्वेरी मुझे के जीवन के लिए की सरल उदाहरण मैं की तरहरूबी

"SELECT * FROM MyTable"

रूबी में

कुछ बस चलाने का एक सरल उदाहरण नहीं मिल सकता है। जो कुछ भी मैं पा रहा हूं वह एक ओआरएम या रेल मानता है। अभी के लिए, मैं ओआरएम नहीं चाहता; मुझे रेल नहीं चाहिए मैं कुछ स्टैंडअलोन ढूंढ रहा हूं जो पीजी मणि का उपयोग करता है और एक साधारण क्वेरी निष्पादित करता है।

+3

इस सवाल पूछने के लिए धन्यवाद। मैंने googling द्वारा जवाब खोजने की कोशिश की लेकिन सभी दस्तावेज मुझे स्पष्ट रूप से लगता है कि मुझे पहले से ही पता है कि ruby-pg का उपयोग कैसे करें। – Muxecoid

उत्तर

49
स्नातकोत्तर मणि प्रलेखन ( http://rubydoc.info/gems/pg/0.10.0/frames) से

require 'pg' 
conn = PGconn.open(:dbname => 'test') 
res = conn.exec('SELECT 1 AS a, 2 AS b, NULL AS c') 
res.getvalue(0,0) # '1' 
res[0]['b']  # '2' 
res[0]['c']  # nil 

मेरा अगला सवाल एक डीबी कि एक पासवर्ड की आवश्यकता है के साथ प्रमाणीकरण किया जाएगा। लग रहा है आप इस प्रकार का कनेक्शन स्ट्रिंग भेजने की तरह कर सकते हैं: मानकों के साथ constuctor
PGconn.connect("dbname=test password=mypass") या का उपयोग करें:
PGconn.new(host, port, options, tty, dbname, login, password) या एक हैश का उपयोग की तरह :password => '...' सभी उपलब्ध विकल्पों के लिए here देखते हैं।

+3

अच्छा सरल उदाहरण, धन्यवाद। मुझे psgl, पायथन, जावा और पर्ल के माध्यम से PostgreSQL के साथ अनुभव किया गया है लेकिन रूबी का कभी भी उपयोग नहीं किया था, और इससे यह सत्यापित करने के लिए यह छोटा हो गया कि मेरा पीजी मणि इंस्टॉलेशन ठीक था। की सराहना की। –

+0

मैं इस परिणाम को किसी तालिका में कैसे प्रिंट करूं, जैसे कि यह pgadmin gui टूल में है? https://rubygems.org/gems/postgres – stack1

30

इस प्रयास करें:

require 'pg' 

conn = PGconn.connect("ip adddress", 5432, '', '', "db name", "user", "password") 
res = conn.exec('select tablename, tableowner from pg_tables') 

res.each do |row| 
    puts row['tablename'] + ' | ' + row['tableowner'] 
end 
+1

उपकरण? – rogerdpack

+0

मैं किसी तालिका में इस परिणाम को प्रिंट कैसे करूं, जैसे कि यह pgAdmin जीयूआई में है: यह 'postgres' मणि जो 'PG' मणि द्वारा superceded किया गया है का उपयोग करता है की तरह लग रहा है – stack1

+0

मैंने थोड़ा और स्पष्ट होने के लिए उत्तर संपादित किया। आपको हैश की एक सरणी मिल रही है, ताकि आप इसे किसी भी तरह से आउटपुट कर सकें। उपर्युक्त उदाहरण "tablename | मालिक" की पंक्तियां मुद्रित करेगा। –

0

नए संस्करणों के लिए (जैसे, 0.18.3 वर्तमान नवीनतम संस्करण 0.21.0 तक) मणि स्नातकोत्तर की, उपयोग करने के बजाय:

conn = PGconn.connect(*args) 

(PGconn, PGresult, और PGError स्थिरांक पदावनत कर रहे हैं, और संस्करण 1.0 के रूप में निकाल दिया हो जाएगा)

आप उदाहरण के लिए, conn = PG.connect(*args) उपयोग करना चाहिए:।

require 'pg' 

conn = PG.connect("IP-Address", 5432, '', '', "database-name", "username", "password") 
res = conn.exec('select product_id, description, price from product') 

res.each do |row| 
    puts row 
end 

संदर्भ लिंक: gem pg