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()


'''

  

转载于:https://www.cnblogs.com/snow-wolf-1/p/11594814.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值