flask db操作

Posted 雪夜杀机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask db操作相关的知识,希望对你有一定的参考价值。

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
# app.config[‘SQLALCHEMY_COMMIT_ON_TEARDOWN‘] = False
# app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS‘] = True
# app.config[‘SQLALCHEMY_ECHO‘] = True

# pip install mysql-connecto

class Config(object):
    ‘‘‘配置参数‘‘‘

    SQLALCHEMY_DATABASE_URI = ‘mysql+mysqlconnector://root:123456@127.0.0.1:3306/flask_db?charset=utf8‘
    #自动跟踪数据库
    SQLALCHEMY_TRACK_MODIFICATIONS = True

app.config.from_object(Config)

db = SQLAlchemy(app)


class User(db.Model):
    __tablename__ = ‘bd_user‘
    uid = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(64),unique=True)
    email = db.Column(db.String(64),unique=True)
    password = db.Column(db.String(255))
    image = db.Column(db.String(255))
    role_id = db.Column(db.Integer,db.ForeignKey(‘db_roles.rid‘))

class Role(db.Model):
    __tablename__ = ‘db_roles‘
    rid = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(64),unique=True)
    users = db.relationship("User",backref="role")




if __name__ == ‘__main__‘:
    db.drop_all()
    db.create_all()
    role1 = Role(name="admin")

    # session记录对象任务
    db.session.add(role1)
    # 提交任务到数据库中
    db.session.commit()

    role2 = Role(name=‘stuff‘)
    db.session.add(role2)
    db.session.commit()


    user1 = User(name=‘Tom‘,email=‘tom@163.com‘,password=‘123456‘,image=‘/upload/img-0000.jpg‘,role_id=role1.rid)
    user2 = User(name=‘Jack‘,email=‘jack@163.com‘,password=‘654321‘,image=‘/upload/img-0000.jpg‘,role_id=role2.rid)
    user3 = User(name=‘lili‘,email=‘lili@163.com‘,password=‘345678‘,image=‘/upload/img-0000.jpg‘,role_id=role1.rid)
    user4 = User(name=‘Pack‘,email=‘pack@163.com‘,password=‘964152‘,image=‘/upload/img-0000.jpg‘,role_id=role2.rid)

    db.session.add_all([user1,user2,user3,user4])
    db.session.commit()

‘‘‘
Role.query.all()  查询所有

r2 = Role.query.first()
r3 = Role.query.get(2)
r3.name

db.session.query(Role).all()
db.session.query(Role).get(2)
db.session.query(Role).first()

 User.query.filter_by()
 
 user = User.query.filter_by(name="Tom",role_id=1).first()
 
 user = User.query.filter(User.name=="Tom",User.role_id==1).first()

条件查询
from sqlalchemy import or_

User.query.filter(or_(User.name=="admin",User.email.endswith("163.com"))).all()

User.query.filter().offset().limit().order_by().all()

# offset跳过两条 limit取两条
User.query.offset(1).all()
User.query.offset(1).limit(2).all()

#不推荐
User.query.order_by("-uid").all()
#推荐 降序
User.query.order_by(User.uid.desc()).all()

#升序
User.query.order_by(User.uid).all()
User.query.order_by(User.uid.asc()).all()

# 分组
from sqlalchemy import func
db.session.query(User.role_id,func.count(User.role_id)).group_by(User.role_id).all()


‘‘‘

  

以上是关于flask db操作的主要内容,如果未能解决你的问题,请参考以下文章

flask-sqlalchemy 一对一,一对多,多对多操作

Flask-SQLAlchemy数据库操作

Flask 编写http接口api及接口自动化测试

Flask框架之数据库迁移集成到Script中

Flask之数据库操作

Flask:操作SQLite3(0.1)