Database
 sql >> डेटाबेस >  >> RDS >> Database

रीथिंक फ्लास्क - फ्लास्क और रेथिंकडीबी द्वारा संचालित एक साधारण टूडू सूची

बुनियादी फ्लास्क और रेथिंकडीबी टेम्पलेट के लिए कई अनुरोधों के बाद, मैंने आगे बढ़ने और एक ब्लॉग पोस्ट लिखने का फैसला किया। यह वह पोस्ट है।

<ब्लॉककोट>

बीटीडब्ल्यू:हम हमेशा अनुरोधों का स्वागत करते हैं। अगर आपके पास कुछ ऐसा है जिसके बारे में आप हमें लिखना या बनाना चाहते हैं, तो हमें एक ईमेल भेजें।

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


RethinkDB सेट करें


रीथिंकडीबी स्थापित करें

यहां नेविगेट करें और अपने सिस्टम के लिए उपयुक्त पैकेज डाउनलोड करें। मैंने Homebrew का उपयोग किया - $ brew install rethinkdb - और बिल्ड को डाउनलोड और इंस्टॉल करने में लगभग बीस मिनट का समय लगा:

==> Installing rethinkdb
==> Downloading http://download.rethinkdb.com/dist/rethinkdb-     1.11.2.tgz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/rethinkdb/1.11.2 --  fetch v8 --fetch protobuf
==> make
==> make install-osx
==> Caveats
To have launchd start rethinkdb at login:
  ln -sfv /usr/local/opt/rethinkdb/*.plist   ~/Library/LaunchAgents
Then to load rethinkdb now:
  launchctl load   ~/Library/LaunchAgents/homebrew.mxcl.rethinkdb.plist
==> Summary
🍺  /usr/local/Cellar/rethinkdb/1.11.2: 174 files, 29M, built in   19.7 minutes


Python ड्राइवरों को विश्व स्तर पर स्थापित करें

$ sudo pip install rethinkdb
<ब्लॉककोट>

नोट: मैंने विश्व स्तर पर (वर्चुअलएन्व के बाहर) रीथिंक स्थापित किया है क्योंकि मैं शायद कई अलग-अलग भाषाओं के साथ कई परियोजनाओं के साथ एक ही संस्करण का उपयोग करूंगा। हम इस ट्यूटोरियल में बाद में वर्चुअलएन्व में इंस्टॉल करेंगे।



अपना सेटअप जांचें

सबसे पहले, निम्न कमांड के साथ सर्वर शुरू करें:

$ rethinkdb

यदि सब कुछ सही तरीके से स्थापित है, तो आपको कुछ ऐसा दिखाई देना चाहिए:

info: Creating directory /Users/michaelherman/rethinkdb_data
info: Creating a default database for your convenience. (This is because you ran 'rethinkdb' without 'create', 'serve', or '--join', and the directory '/Users/michaelherman/rethinkdb_data' did not already exist.)
info: Running rethinkdb 1.11.2 (CLANG 4.2 (clang-425.0.28))...
info: Running on Darwin 12.4.0 x86_64
info: Loading data from directory    /Users/michaelherman/rethinkdb_data
info: Listening for intracluster connections on port 29015
info: Listening for client driver connections on port 28015
info: Listening for administrative HTTP connections on port 8080
info: Listening on addresses: 127.0.0.1, ::1
info: To fully expose RethinkDB on the network, bind to all addresses
info: by running rethinkdb with the `--bind all` command line option.
info: Server ready

फिर कनेक्शन का परीक्षण करें। अपने टर्मिनल में एक नई विंडो खोलें और निम्नलिखित कमांड दर्ज करें:

>>>
$ python
>>> import rethinkdb
>>> rethinkdb.connect('localhost', 28015).repl()

आपको देखना चाहिए:

>>>
<rethinkdb.net.Connection object at 0x101122410>

पायथन शेल से बाहर निकलें लेकिन रेथिंकडीबी सर्वर को अन्य टर्मिनल विंडो में चलने दें।




बेसिक फ्लास्क प्रोजेक्ट सेट करें


अपना प्रोजेक्ट स्टोर करने के लिए एक निर्देशिका बनाएं

$ mkdir flask-rethink
$ cd flask-rethink


वर्चुअलएन्व सेट अप और सक्रिय करें

$ virtualenv --no-site-packages env
$ source env/bin/activate


फ्लास्क और फ्लास्क-WTF इंस्टॉल करें

$ pip install flask
$ pip install flask-wtf


पिप आवश्यकता फ़ाइल बनाएं

$ pip freeze > requirements.txt


फ्लास्क बॉयलरप्लेट डाउनलोड करें

इस रेपो की टेम्प्लेट डायरेक्टरी में मिला। आपकी परियोजना संरचना अब इस तरह दिखनी चाहिए:

├── app
│   ├── __init__.py
│   ├── forms.py
│   ├── models.py
│   ├── templates
│   │   ├── base.html
│   │   └── index.html
│   └── views.py
├── readme.md
├── requirements.txt
└── run.py


एप्लिकेशन चलाएं

$ python run.py

http://localhost:5000/ पर नेविगेट करें, और आपको यह देखना चाहिए:

अभी तक कुछ भी सबमिट करने का प्रयास न करें, क्योंकि हमें पहले डेटाबेस सेटअप प्राप्त करने की आवश्यकता है। आइए रेथिंकडीबी को आगे बढ़ाएं।




RethinkDB कॉन्फ़िग


रीथिंकडीबी स्थापित करें

$ pip install rethinkdb


निम्न कोड को “views.py” में जोड़ें

# rethink imports
import rethinkdb as r
from rethinkdb.errors import RqlRuntimeError

# rethink config
RDB_HOST =  'localhost'
RDB_PORT = 28015
TODO_DB = 'todo'

# db setup; only run once
def dbSetup():
    connection = r.connect(host=RDB_HOST, port=RDB_PORT)
    try:
        r.db_create(TODO_DB).run(connection)
        r.db(TODO_DB).table_create('todos').run(connection)
        print 'Database setup completed'
    except RqlRuntimeError:
        print 'Database already exists.'
    finally:
        connection.close()
dbSetup()

# open connection before each request
@app.before_request
def before_request():
    try:
        g.rdb_conn = r.connect(host=RDB_HOST, port=RDB_PORT, db=TODO_DB)
    except RqlDriverError:
        abort(503, "Database connection could be established.")

# close the connection after each request
@app.teardown_request
def teardown_request(exception):
    try:
        g.rdb_conn.close()
    except AttributeError:
        pass

प्रत्येक कार्य क्या करता है, इसकी संक्षिप्त व्याख्या के लिए टिप्पणियों की जाँच करें।



अपना सर्वर फिर से शुरू करें

आपको अपने टर्मिनल में निम्न अलर्ट देखना चाहिए:

Database setup completed
<ब्लॉककोट>

यदि आपको यह त्रुटि दिखाई देती है rethinkdb.errors.RqlDriverError: Could not connect to localhost:28015. आपका RethinkDB सर्वर नहीं चल रहा है। एक नई टर्मिनल विंडो खोलें और $ rethinkdb चलाएं ।

इसलिए, हमने "todo" नामक एक नया डेटाबेस बनाया, जिसमें "todos" नामक एक तालिका है।

आप इसे RethinkDB Admin में सत्यापित कर सकते हैं। http://localhost:8080/ पर नेविगेट करें। व्यवस्थापक को लोड करना चाहिए। यदि आप "टेबल्स" पर क्लिक करते हैं, तो आपको हमारे द्वारा बनाए गए डेटाबेस और टेबल को देखना चाहिए:



डिस्प्ले टोडोस

डेटाबेस सेटअप के साथ, todos को प्रदर्शित करने के लिए कोड जोड़ें। index()अपडेट करें "views.py" में कार्य करें:

@app.route("/")
def index():
    form = TaskForm()
    selection = list(r.table('todos').run(g.rdb_conn))
    return render_template('index.html', form=form, tasks=selection)

यहां हम "todos" तालिका का चयन कर रहे हैं, सभी डेटा को खींच रहे हैं, जो JSON में है, और संपूर्ण तालिका को टेम्प्लेट में पास कर रहे हैं।



मैन्युअल रूप से डेटा जोड़ें

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

>>>
$ python
>>> import rethinkdb
>>> conn = rethinkdb.connect(db='todo')
>>> rethinkdb.table('todos').insert({'name':'sail to the moon'}).run(conn)
{u'errors': 0, u'deleted': 0, u'generated_keys': [u'c5562325-c5a1-4a78-8232-c0de4f500aff'], u'unchanged': 0, u'skipped': 0, u'replaced': 0, u'inserted': 1}
>>> rethinkdb.table('todos').insert({'name':'jump in the ocean'}).run(conn)
{u'errors': 0, u'deleted': 0, u'generated_keys': [u'0a3e3658-4513-48cb-bc68-5af247269ee4'], u'unchanged': 0, u'skipped': 0, u'replaced': 0, u'inserted': 1}
>>> rethinkdb.table('todos').insert({'name':'think of another todo'}).run(conn)
{u'errors': 0, u'deleted': 0, u'generated_keys': [u'b154a036-3c3b-47f4-89ec-cb9f4eff5f5a'], u'unchanged': 0, u'skipped': 0, u'replaced': 0, u'inserted': 1}
>>>

इसलिए, हम डेटाबेस से जुड़े, फिर डेटाबेस के भीतर तालिका में तीन नई वस्तुओं को दर्ज किया। अधिक जानकारी के लिए API दस्तावेज़ देखें।

सर्वर को फायर करें। अब आपको तीन कार्य देखने चाहिए:



फ़ॉर्म को अंतिम रूप दें

index()अपडेट करें प्रपत्र से डेटा खींचने और उसे डेटाबेस में जोड़ने के लिए फिर से कार्य करें:

@app.route('/', methods = ['GET', 'POST'])
def index():
    form = TaskForm()
      if form.validate_on_submit():
          r.table('todos').insert({"name":form.label.data}).run(g.rdb_conn)
          return redirect(url_for('index'))
      selection = list(r.table('todos').run(g.rdb_conn))
      return render_template('index.html', form = form, tasks = selection)

इसका परीक्षण करें। कुछ टोटके जोड़ें। पागल हो जाओ।




निष्कर्ष और चुनौतियाँ

वर्तमान ऐप कार्यात्मक है, लेकिन हम और भी बहुत कुछ कर सकते हैं। इस ऐप को अगले स्तर पर ले जाएं।

यहां कुछ उपाय दिए गए हैं:

  1. उपयोगकर्ता लॉगिन जोड़ें।
  2. एक अधिक मजबूत फॉर्म बनाएं, जहां आप प्रत्येक टूडू के लिए एक नियत तारीख जोड़ सकते हैं, और फिर उन्हें डीओएम में प्रस्तुत करने से पहले उस तिथि के अनुसार क्रमबद्ध करें।
  3. कार्यात्मक और इकाई परीक्षण जोड़ें।
  4. प्रत्येक कार्य के लिए उप कार्य बनाने की क्षमता जोड़ें।
  5. एपीआई संदर्भ दस्तावेज़ पढ़ें। विभिन्न तरीकों से खेलें।
  6. एप्लिकेशन को मॉड्यूलर करें।
  7. कोड को रिफलेक्टर करें। RethinkDB को अपना नया कोड दिखाएं।

आप और क्या देखना चाहेंगे? भाग 2 देखने के इच्छुक हैं? आप MongoDB की तुलना में RethinkDB को कैसे पसंद करते हैं? अपने विचार नीचे साझा करें।

आप रेपो से सभी कोड ले सकते हैं। चीयर्स!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अग्रणी वाइल्डकार्ड खोज पर अनुवर्ती #1

  2. स्क्रैच से डेटाबेस मॉडल कैसे बनाएं

  3. SQL के साथ टेबल और कॉलम कैसे ड्रॉप करें

  4. वास्तविक समय संचार के लिए PHP के साथ फायरबेस को एकीकृत करें

  5. आपके टूलबॉक्स से हटाने के लिए बहिष्कृत सुविधाएँ - भाग 1