सबसे पहले आपको metadata
साझा करना होगा और फिर से उपयोग करने योग्य ऐप के लिए फ्लास्क-स्क्लेल्चेमी डीबी.मोडेल का उपयोग न करें।
दूसरी बार आपको सिग्नल, शॉर्ट-कट और अन्य सामानों का समर्थन करने के लिए फ्लास्क-स्क्लेल्चेमी से नए अड्डों को विस्तारित करने के साथ सभी वर्गों को फिर से बनाना होगा। (गाड़ी यह हो सकता है)
ठिकानों एकीकृत:
def integrate_models(cls, nbase):
new_bases = list(cls.__bases__) + [nbase]
new_dict = dict(cls.__dict__)
new_dict.update(dict(nbase.__dict__))
return type.__new__(cls.__class__, cls.__name__, tuple(new_bases), new_dict)
SQLAlchemy विस्तार के साथ
उदाहरण बोतल एप्लिकेशन:
# -*- coding: utf-8 -*-
from flask import Flask
from flaskext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
if __name__ == '__main__':
from some_model_base import init_metadata
init_metadata(db.Model.metadata)
from some_model import SomeClass
SomeClass = integrate_models(SomeClass, db.Model)
db.create_all()
print SomeClass.query.all()
कहाँ some_model_base.py:
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
def init_metadata(metadata):
Base.metadata = metadata
और some_model.py :
from sqlalchemy import Column, Integer, String
from some_model_base import Base
class SomeClass(Base):
__tablename__ = 'some_table'
id = Column(Integer, primary_key=True)
name = Column(String(50))
इस उदाहरण में केवल db.create_all और SomeClass.query शॉर्टकट का परीक्षण किया गया।
मेरी खराब अंग्रेजी के लिए खेद है।
एचएम, मुझे इसे आजमाने की आवश्यकता होगी। क्या आप मुख्य कार्यक्रम में मॉडल के साथ संबंध बनाने के लिए मॉड्यूल को अन्य मॉड्यूल में कॉन्फ़िगर करने का कोई तरीका ढूंढ सकते हैं? –
मुझे लगता है कि सबसे अच्छा तरीका यह है कि - अपने पुन: प्रयोज्य ऐप बेस क्लासेस या मिक्सइन्स में घोषित करें और फिर उनको सब्सक्राइब करने वाले ठोस मॉडल बनाएं। – estin