2013-02-09 19 views
19

में फ़ाइल द्वारा पृथक SQLAlchemy मॉडल मैंने देखा है कि फ्लास्क ऐप्स के लिए कई उदाहरण मुख्य ऐप फ़ाइल (http://pythonhosted.org/Flask-SQLAlchemy/quickstart.html, http://maximebf.com/blog/2012/10/building-websites-in-python-with-flask/) में सीधे संग्रहीत मॉडल हैं। अन्य (http://flask.pocoo.org/docs/patterns/sqlalchemy/) में "models.py" फ़ाइल है जिसमें मॉडल रखा गया है।फ्लास्क

अलग-अलग फ़ाइलों से मेरा फ्लास्क ऐप आयात मॉडल कैसे हो सकता है, e.x. "User.py"?

from app import db 

class User(db.Model): 
    [...] 

मैं निम्नलिखित त्रुटि मिलती है:: जब मैं इन सामग्री के साथ एक User.py फ़ाइल बनाने की कोशिश

File "/Users/stackoverflow/myapp/models/User.py", line 1, in <module> 
from app import db 
ImportError: No module named app 

जब मैं अपने मॉड्यूल फ़ाइल में from models import User डालें।

+0

लेकिन जहां डीबी परिभाषित किया गया है? यदि आप '.py.py' में 'db' बनाते हैं तो आपको' app' से नहीं, बल्कि .डेटा आयात डीबी 'से होना चाहिए। –

+0

'db' को मेरी मुख्य 'app.py' फ़ाइल में परिभाषित किया गया है:' db = SQLAlchemy (एप) '। – element119

+0

मुझे नहीं पता कि इसे और कहां परिभाषित किया जाए, क्योंकि तब "ऐप" चर किसी भी अन्य फ़ाइल में गुंजाइश नहीं होगा। – element119

उत्तर

14

यह उत्तर बेहद सहायक था: https://stackoverflow.com/a/9695045/353878

मुझे तुरंत डीबी शुरू करने की आवश्यकता नहीं थी।

+1

इसका क्या अर्थ है, "तुरंत डीबी शुरू नहीं करें"? – johnny

+1

@johnny इसका मतलब है कि 'SQLAlchemy()' को 'ऐप' को मॉड्यूल में पैरामीटर के रूप में नहीं लेना पड़ता है। अधिकांश उदाहरणों में आप 'SQLAlchemy (ऐप) 'देख सकते हैं लेकिन इस मामले में इसे अन्य ऐप से' ऐप 'की आवश्यकता है। इसके बजाय आप अनियमित 'SQLAlchemy() 'का उपयोग कर सकते हैं और बाद में' init_app (ऐप) 'विधि का उपयोग कर सकते हैं जैसा कि [http://stackoverflow.com/a/9695045/2040487 ](httpoverstow.com/a/9695045 में वर्णित है/2,040,487)। –

-1
from app.database import Base 

class User(Base): 
__tablename__ = 'users' 

क्या यह इस तरह से होना चाहिए ??

+0

ऐसा लगता है कि स्क्लक्लेमी जैसा दिखता है, फ्लास्क-एसक्ल एल्केमी को अनुरोधित ऑप की तरह नहीं। –