flask-sqlalchemy的扩展
- 在Flask中使用mysql数据库,需要安装一个flask-sqlalchemy的扩展
pip install flask-sqlalchemy - 要连接mysql数据库,仍需要安 pymysql
pip install pymysql flask 中使用flask-sqlalchemy的扩展
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
class Config(object):
"""配置参数"""
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:just@localhost:3306/flask_py"
SQLALCHEMY_TRACK_MODIFICATIONS = True
app.config.from_object(Config)
db = SQLAlchemy(app)
class Role(db.Model):
"""用户角色/身份表"""
__tablename__ = "db_role"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(32),unique=True)
role1 = db.relationship("User", backref="role")
class User(db.Model):
"""用户表"""
__tablename__ = "db_user"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
email = db.Column(db.String(128), unique=True)
password = db.Column(db.String(128))
role_id = db.Column(db.Integer, db.ForeignKey("db_role.id"))
if __name__ == '__main__':
db.drop_all()
db.create_all()
role1 = Role(name="admin")
role2 = Role(name="stuff")
db.session.add(role1)
db.session.add(role2)
db.session.commit()
us1 = User(name='wang', email='wang@163.com', password='123456', role_id=role1.id)
us2 = User(name='zhang', email='zhang@189.com', password='201512', role_id=role2.id)
us3 = User(name='chen', email='chen@126.com', password='987654', role_id=role2.id)
us4 = User(name='zhou', email='zhou@163.com', password='456789', role_id=role1.id)
db.session.add_all([us1, us2, us3, us4])
db.session.commit()
常用的SQLAlchemy字段类型

常用的SQLAlchemy列选项

常用的SQLAlchemy关系选项

数据库基本操作
db = SQLAlchemy(app)
db.create_all()
db.drop_all()
ro1 = Role(name='admin')
db.session.add(ro1)
db.session.commit()
us1 = User(name='wang',email='wang@163.com',pswd='123456',role_id=ro1.id)
us2 = User(name='zhang',email='zhang@189.com',pswd='201512',role_id=ro2.id)
us3 = User(name='chen',email='chen@126.com',pswd='987654',role_id=ro2.id)
us4 = User(name='zhou',email='zhou@163.com',pswd='456789',role_id=ro1.id)
db.session.add_all([us1,us2,us3,us4])
db.session.commit()
User.query.filter_by(name='wang').all()
User.query.first()
User.query.all()
User.query.filter(User.name.endswith('g')).all()
User.query.get()
User.query.filter(User.name!='wang').all()
from sqlalchemy import and_
User.query.filter(and_(User.name!='wang', User.email.endswith('163.com'))).all()
from sqlalchemy import or_
User.query.filter(or_(User.name!='wang',User.email.endswith('163.com'))).all()
from sqlalchemy import not_
User.query.filter(not_(User.name=='chen')).all()
user = User.query.first()
db.session.delete(user)
db.session.commit()
User.query.all()
user = User.query.first()
user.name = 'dong'
db.session.commit()
User.query.first()
User.query.filter_by(name='zhang').update({'name':'li'})