2012-11-16 7 views
6

में प्रतिबिंब/ऑटोलोड लोड का उपयोग कैसे करूं मैं एक साधारण परीक्षण ऐप में फ्लास्क-स्क्लेल्चेमी को आजमा रहा हूं। मैं एक एसक्यूएल सर्वर चल रहा हूँ, और मैं तो जैसे SQLAlchemy का उपयोग बोतल से कनेक्ट कर सकते हैं:मैं फ्लास्क-स्क्लैल्चेमी

from flask import render_template 
from app import app, db 

@app.route('/') 
@app.route('/index') 
def index(): 

    people = list(db.session.execute("select top 10 * from people where ppl_username IS NOT NULL")) 

हालांकि, मैं भी क्वेरी करने के लिए SQLAlchemy की एसक्यूएल छद्म भाषा और ORM भाग का उपयोग करना चाहते हैं। चूंकि यह एक मौजूदा डेटाबेस है, मैं अपनी खुद की कक्षाएं लिखना नहीं चाहता हूं और डेटाबेस को उत्पन्न करता हूं, मैं मौजूदा डेटाबेस को प्रतिबिंबित करना चाहता हूं और इस तरह से इसका उपयोग करना चाहता हूं। मुझे the reflect method in the API docs मिला है, लेकिन मैं यह नहीं समझ सकता कि इसका उपयोग कैसे करें (और कहां)।

यह सोचने के अलावा कि यह कैसे करें; मैं भी सोच रहा हूं:

  • डेटाबेस प्रतिबिंब प्रत्येक अनुरोध पर या केवल आवेदन की शुरुआत में होगा? (यह एक बड़ा डेटाबेस है, इसलिए प्रत्येक अनुरोध पर एक शो-स्टॉपर होगा)
  • डेटाबेस से कक्षाओं के लिए कोड जेनरेट करना और बाद में उपयोग के लिए उन्हें सहेजना संभव है, जैसे Django के InspectDB() करता है?

धन्यवाद,

उत्तर

4

हाँ, यह सब संभव है। मैं ठीक से काम करने के लिए sqlautocode का उपयोग करता हूं। यह sqlalchemy में टेबल/कॉलम बनाने के लिए sqlalchemy कोड उत्पन्न करता है और उन्हें एक फ़ाइल में रखता है। बस इसे स्थापित करें और फिर कमांड लाइन से इसे चलाएं।

यह मेरी webapp के लिए एक मौजूदा mysql db से मॉडल SQLAlchemy मॉडल उत्पन्न करता है और एक फाइल alchemy_models.py बनाता है:

sqlautocode mysql://<dbuser>:<pass>@localhost:3306/<dbname> -o alchemy_models.py

नोट mysql: // बिट केवल है syntaxt एक कनेक्शन उत्पन्न करने के लिए एसए

उम्मीद है कि यह

+0

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