zoukankan      html  css  js  c++  java
  • flask mysql sqlalchemy教程

    1.建立models_base文件

    连接数据库

    import logging
    import ast
    import simplejson as json
    import time
    from flask_sqlalchemy import SQLAlchemy
    from flask import Flask
    
    from commons.entity import rds_mongo
    
    app = Flask(__name__)
    
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:1234@localhost:3306/flask_demo'
    
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
    db = SQLAlchemy(app)
    
    logger = logging.getLogger("platform")

    2.建立数据库

    class UserInfo(DynamicDocument):
        # Columns
    
        __tablename__ = 'userinfo'
    
        uid = Column(String(64), primary_key=True)
        nick_name = Column(String(64))
        sex = Column(String(64))
        email = Column(String(64))
        device_id = Column(String(100))
        imei = Column(String(100))
        coin_balance = Column(Integer())  # 金币余额
        real_name = Column(String(100))  # 真名
        id_card = Column(String(100))  # 身份证号
        create_time = Column(String(100))  # 创建时间
        last_login_time = Column(String(100), nullable=True)  # 创建时间
        cash = Column(Float())  # # 现金账户
        other_column = Column(Text(), nullable=True)
    
        def __init__(self, coin_balance=0, lx_login=1, lj_login=1, *args, **kwargs):
            super(UserInfo, self).__init__(*args, **kwargs)
            self.uid = uid_value_decorator(random.randint(0, 9))
            self.coin_balance = coin_balance
            self.lx_login = lx_login  # 连续登陆的天数
            self.lj_login = lj_login  # 累计登陆的天数

    3.常用字段类型

    常用列选项

      

    关系选项

     

    4.基本查询

    # 查询所有
    def checkAll():
        user =UserInfo.query.all()
        print(user)
    
    
    # 修改数据
    def update(name, pwd):
        user = User.query.filter(User.name == name).first()
        if user is not None:
            user.thrust = pwd
            db.session.commit()
            print('修改 用户 %s ,密码为:%s' % (name, pwd))
        else:
            print('用户不存在')
    
    
    # 删除数据
    def delete(name, pwd):
        user = User.query.filter(User.name == name, User.thrust == pwd).first()
        if user is not None:
            db.session.delete(user)
            db.session.commit()
            print('删除 用户 %s ,密码为:%s' % (name, pwd))
        else:
            print('用户不存在,或密码不正确')
    
    from models  import User
    #添加数据
    user=UserInfo(1,'xiaoxiao','ss123')
    user.save()
    #按条件查询
    result=User.query.filter(User.id>5).all()
    result=User.query.filter(User.username=='xiaoxiao').all() #返回结果为一个列表,列表内元素为User对象,all()为返回查询的所有结果,first()返回查询结果中的第一个
    result=User.query.filter(User.username.startswith('x'))  #starstwith以什么开头
    #获取查询结果的总数量
    count=User.query.filter(User.id>5).count()
    #获取查询结果中指定的数据
    result=User.query.filter(User.id>5).all()[1:3]  #查询结果以列表返回,所以可以根据列表的切片操作来获取对应数据
    
    #多条件查询
    #sqlalchemy内置了多条件查询方法 : and_(), or()_ ,not_()
    result=User.query.filter(and_(User.id>5,User.username.startswith('x'))) #查询id大于5并且用户名以x开头的
    result=User.query.filter(or_(User.id>5,User.username.startswith('x'))) #查询id大于5或者用户名以x开头的
    result=User.query.filter(and_(User.username.startswith('x'))) #查询用户名不是以x开头的
    
    
    #修改
    result=User.query.filter(User.username=='xiaoxiao').all()[0]
    result.password='000000'
    db.session.commit()
    
    #删除
    result=User.query.filter(User.username=='xiaoxiao').all()[0]
    db.session.delete(result)
    db.session.commit()
  • 相关阅读:
    ES6小点心第二弹——底部浮现弹窗
    ES6小点心之通用弹窗
    从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系!
    【quickhybrid】如何实现一个Hybrid框架
    【开源】canvas图像裁剪、压缩、旋转
    优雅的H5下拉刷新【minirefresh】
    前端筑基篇(一)->ajax跨域原理以及解决方案
    钉钉开放与商业化团队前端大量招人
    AJAX请求真的不安全么?谈谈Web安全与AJAX的关系。
    【quickhybrid】iOS端的项目实现
  • 原文地址:https://www.cnblogs.com/zhaoyingjie/p/12552024.html
Copyright © 2011-2022 走看看