मुझे अंततः उपरोक्त समस्या का समाधान मिल गया।
मैंने यहां में परिभाषित घोषणात्मक मॉडल का उपयोग किया है यहां दिए गए फ्लास्क-SQLAlchemy के लिए क्विकस्टार्ट दस्तावेज़ों का पालन करने के बजाय ।
बदली गई फ़ाइलें इस प्रकार हैं:
db.py
:
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine(DB_URI, convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
def init_db():
import user
Base.metadata.create_all(bind=engine)
main.py
:
from db import init_db, db_session
init_db()
@app.teardown_appcontext
def shutdown_session(exception=None):
db_session.remove()
user.py
:
from sqlalchemy import Column, Integer, String
from data_models.db import Base
class User(Base):
id = db.Column(Integer, primary_key=True)
username = db.Column(String(80), unique=True, nullable=False)
email = db.Column(String(120), unique=True, nullable=False)
रिकॉर्ड के लिए क्वेरी करने के लिए हम User.query.filter_by().all()
. का उपयोग कर सकते हैं या db_engine.execute()
।
डेटाबेस में नया डेटा लिखने के लिए, हम निम्नलिखित का उपयोग कर सकते हैं:
new_user_entry = User(username = "abc", email = "[email protected]")
db_session.add(new_user_entry)
db_session.commit()