1. Using the Flask-sqlalchemy extension
#flask-ext-sqlalchemy.py fromFlaskImportFlask fromFlask.ext.sqlalchemyImportSqlalchemyapp= Flask (__name__) app.config['Sqlalchemy_database_uri'] ='sqlite://'app.config['sqlalchemy_track_modifications'] =Truedb=SQLAlchemy (APP)#Defining ORMclassUser (db. Model): ID= db. Column (db. Integer, primary_key=True) name= db. Column (db. String (unique=),True) Email= db. Column (db. String (+), unique=True)def __init__(self, Name, email): Self.name=name Self.email=Emaildef __repr__(self):return '<user%r>'%Self.name#Create a table, insert data@app. Before_first_requestdefsetup ():#recreate database each time for demodb.create_all () admin= User ('Admin','[email protected]') db.session.add (admin) guestes= [User ('Guest1','[Email protected]com'), User ('Guest2','[email protected]'), User ('Guest3','[email protected]'), User ('Guest4','[email protected]')] Db.session.add_all (guestes) db.session.commit ()#Enquiry@app. Route ('/user')defusers (): Users=User.query.all ()return "<br>". Join (["{0}: {1}". Format (User.Name, User.email) forUserinchusers]) #Enquiry@app. Route ('/user/<int:id>')defUser (ID): User= User.query.filter_by (id=ID). One ()return "{0}: {1}". Format (User.Name, User.email)#Runif __name__=='__main__': App.run ('127.0.0.1', 5000)
2. Using native SQLAlchemy
#flask-pure-sqlalchemy.py fromFlaskImportFlask fromSQLAlchemyImportColumn, Integer, String fromSQLAlchemyImportCreate_engine fromSqlalchemy.ormImportSession fromSqlalchemy.ext.declarativeImportDeclarative_baseapp= Flask (__name__) Base=Declarative_base ()
# Define ORM classUser (Base):__tablename__='Users'ID= Column (Integer, primary_key=True) name= Column (String (), unique=True) Email= Column (String), unique=True)def __init__(Self, Name=none, email=None): Self.name=name Self.email=Emaildef __repr__(self):return '<user%r>'%(Self.name)#Create a table, insert data@app. Before_first_requestdefsetup ():#recreate database each time for demoEngine = Create_engine ('sqlite://', echo=True)GlobalSession Session=Session (Engine) Base.metadata.drop_all (bind=engine) Base.metadata.create_all (Bind=engine) Admin= User ('Admin','[email protected]') session.add (admin) guestes= [User ('Guest1','[email protected]'), User ('Guest2','[email protected]'), User ('Guest3','[email protected]'), User ('Guest4','[email protected]')] Session.add_all (guestes) session.commit ()#Enquiry@app. Route ('/user')defusers (): Users=session.query (User). All ()return "<br>". Join (["{0}: {1}". Format (User.Name, User.email) forUserinchusers]) @app. Route ( '/user/<int:id>')defUser (ID): User= Session.query (User). Filter (User.ID = =ID). One ()return "{0}: {1}". Format (User.Name, User.email)if __name__=='__main__': App.run ('127.0.0.1', 5000)
Difference
Flask two ways to use SQLAlchemy