2012-05-17 20 views
13

मेरे आश्चर्य के लिए, मुझे यह प्रश्न कहीं और नहीं पूछा गया है। लघु संस्करण, मैं एक ऐप लिख रहा हूं जिसे मैं क्लाउड पर तैनात करने की योजना बना रहा हूं (संभवतः हेरोकू का उपयोग करके), जो विभिन्न वेब स्क्रैपिंग और डेटा संग्रह करेगा। क्लाउड में होने का कारण यह है कि मैं इसे अपने हर दिन चलाने के लिए सेट कर सकता हूं और डेटा को अपने कंप्यूटर पर बिना किसी कंप्यूटर के अपने डेटाबेस में खींच सकता हूं, साथ ही साथ बाकी टीम भी एक्सेस कर सकती है डेटा।पाइथन डेटाबेस Django (Heroku के लिए) का उपयोग किए बिना

मैं एडब्ल्यूएस के सरल डीबी और डायनेमो डीबी का उपयोग करता था, लेकिन मुझे एसडीबी की स्टोरेज सीमाएं छोटी और डीडीबी की खराब पूछताछ की समस्या होने की क्षमता मिली, इसलिए मैं एक डेटाबेस सिस्टम (एसक्यूएल या नोएसक्यूएल) की तलाश कर रहा हूं जो स्टोर कर सकता है मनमानी-लंबाई मान (और आदर्श मनमानी डेटा संरचनाएं) और किसी भी क्षेत्र पर पूछताछ की जा सकती है।

मुझे साफ़ोकू जैसे हेरोकू के लिए कई डेटाबेस समाधान मिल गए हैं, लेकिन मैंने जो जानकारी देखी है, वह दिखाता है कि डेटाबेस तक पहुंचने के लिए Django को कैसे सेट अप किया जाए। चूंकि इसका उद्देश्य स्क्रिप्ट होना है और साइट नहीं है, इसलिए मुझे वास्तव में Django में गोता लगाने की इच्छा नहीं है अगर मुझे ऐसा नहीं करना है।

क्या कोई ऐसा डेटाबेस है जिसे मैं जेडैगो का उपयोग किये बिना पाइथन के साथ हेरोकू में लगा सकता हूं?

उत्तर

3

मैं मोंगोडीबी का उपयोग करूंगा। Heroku इसके लिए समर्थन हासिल है, इसलिए मुझे लगता है कि यह वास्तव में शुरू करने और बाहर पैमाने पर करने के लिए आसान हो जाएगा: https://addons.heroku.com/mongohq

अजगर के बारे में: MongoDB एक वास्तव में आसान डेटाबेस है। स्कीमा लचीला है और पाइथन शब्दकोशों के साथ वास्तव में अच्छी तरह से फिट बैठता है। यह वास्तव में कुछ अच्छा है।

आप PyMongo

from pymongo import Connection 
connection = Connection() 

# Get your DB 
db = connection.my_database 

# Get your collection 
cars = db.cars 

# Create some objects 
import datetime 
car = {"brand": "Ford", 
     "model": "Mustang", 
     "date": datetime.datetime.utcnow()} 

# Insert it 
cars.insert(car) 

सुंदर सरल उपयोग कर सकते हैं उह?

उम्मीद है कि यह मदद करता है।

संपादित करें:

Endophage उल्लेख किया है, मोंगो साथ इंटरफ़ेस के लिए एक और अच्छा विकल्प mongoengine है। यदि आपके पास स्टोर करने के लिए बहुत सारे डेटा हैं, तो आपको उस पर एक नज़र रखना चाहिए।

+1

+1 मोंगो के लिए +1 लेकिन मैं मोंगोएन्गिन का उपयोग करने की भी सिफारिश करता हूं जो पिमोंगो और ग्रिडएफएस के ऊपर एक ओआरएम परत प्रदान करता है। – Endophage

+1

@ एन्डोफेज यह सच है। जैसे ही वह सादगी चाहता है, मैंने पिमोंगो की सिफारिश की। लेकिन, मुझे इसका उल्लेख करना चाहिए। धन्यवाद! – santiagobasulto

+0

pymongo पर mongoengine का क्या फायदा है? यदि कुछ भी हो, तो ऐसा लगता है कि मोंगोएन्गिन को स्कीमा लिखने की आवश्यकता होती है, जबकि पिमोंगो नहीं करता है। – jdotjdot

0

एक स्टैंडअलोन Heroku Postgres डेटाबेस बनाएँ। http://postgres.heroku.com

+0

ठीक है, लेकिन सवाल टी बनी हुई है यहाँ - मैं इसे अजगर के साथ कैसे लगाऊंगा? 'Psycopg2'? – jdotjdot

3

मैंने हाल ही में फ्लास्क के साथ ऐसा किया था। (Https://github.com/HexIce/flask-heroku-sqlalchemy)।

1. आप Django उपयोग नहीं करते हैं तो आप ऐसा करने से अपने आप को अपने डेटाबेस स्थापित करने के लिए हो सकता है::

gotchas के एक जोड़े हैं

heroku addons:add shared-database 

(या जो भी आप चाहते हैं डेटाबेस उपयोग करें, दूसरों को पैसे खर्च करें।)

2. डेटाबेस यूआरएल "DATABASE_URL" पर्यावरण चर में Heroku में संग्रहीत है। पायथन में आप इसे कर सकते हैं।

dburl = os.environ['DATABASE_URL'] 

आप वहां से डेटाबेस से कनेक्ट करने के लिए क्या करते हैं, एक विकल्प SQLAlchemy है।

+0

कोई प्रतिनिधि नहीं, लेकिन संपादित नहीं कर सकता: - [हेरोोकू डाटाबेस पेज] (https://devcenter.heroku.com/articles/database) और [फ्लास्क में स्क्लेक्लेमी] (http://flask.pocoo.org/docs/पैटर्न/sqlalchemy /) – chromy

+2

'साझा-डेटाबेस' के बजाय, 'heroku-postgresql: dev' का उपयोग करें जो निःशुल्क भी है, और आपको बाहरी हेकोकू से कनेक्ट करने देता है, पोस्टर 9.1 है, आदि: https: //postgres.heroku। कॉम/ब्लॉग/अतीत/2012/4/26/heroku_postgres_development_plan/ – Will

19

आप अपने ऐप को Django का उपयोग करने के बिना Heroku से प्रदान किया गया डेटाबेस प्राप्त कर सकते हैं।ऐसा करने के लिए:

heroku addons:add heroku-postgresql:dev 

आप एक बड़ा अधिक समर्पित डेटाबेस की जरूरत है, तो आप Heroku Postgres

अपने requirements.txt के भीतर में योजनाओं की जांच कर सकते आप जोड़ना चाहते हैं जाएगा:

psycopg2 

फिर आप निम्न के साथ कनेक्ट/बातचीत कर सकते हैं:

import psycopg2 
import os 
import urlparse 

urlparse.uses_netloc.append('postgres') 
url = urlparse.urlparse(os.environ['DATABASE_URL']) 

conn = psycopg2.connect("dbname=%s user=%s password=%s host=%s " % (url.path[1:], url.username, url.password, url.hostname)) 
cur = conn.cursor() 

query = "SELECT ...." 
cur.execute(query) 
+0

आपको बहुत धन्यवाद! मैं थोड़ी देर के लिए चल रहे एक नंगे हड्डियों के पोस्टस्क्रेस फ्लास्क ऐप प्राप्त करने की कोशिश कर रहा हूं, और इन सभी के बारे में लिखना चाहता है इन दिनों sqlalchemy है। –

+0

जब भी मैं इसे चलाने का प्रयास करता हूं तो मुझे 'DATABASE_URL' के साथ लाइन पर '' मिलता है। कोई सुझाव? –

+0

यदि आप फ्लास्क का उपयोग कर रहे हैं, तो फ्लास्क-स्क्लाक्लेमी एक कनेक्शन पूल को स्पिन करेगा और आपको एक अच्छा डीबी प्रदान करेगा। घोषणात्मक मॉडल को परिभाषित करने के लिए मॉडल क्लास। SQLAlchemy आपको अपने डेटाबेस से बातचीत करने के कई तरीके देता है। –

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