• Flask数据库的基本操作


    Flask操作数据库基本操作
     

    常用的SQLAlchemy字段类型

    类型名python中类型说明
    Integer int 普通整数,一般是32位
    SmallInteger int 取值范围小的整数,一般是16位
    BigInteger int或long 不限制精度的整数
    Float float 浮点数
    Numeric decimal.Decimal 普通整数,一般是32位
    String str 变长字符串
    Text str 变长字符串,对较长或不限长度的字符串做了优化
    Unicode unicode 变长Unicode字符串
    UnicodeText unicode 变长Unicode字符串,对较长或不限长度的字符串做了优化
    Boolean bool 布尔值
    Date datetime.date 时间
    Time datetime.datetime 日期和时间
    LargeBinary str 二进制文件

    常用的SQLAlchemy列选项

    选项名说明
    primary_key 如果为True,代表表的主键
    unique 如果为True,代表这列不允许出现重复的值
    index 如果为True,为这列创建索引,提高查询效率
    nullable 如果为True,允许有空值,如果为False,不允许有空值
    default 为这列定义默认值

    常用的SQLAlchemy关系选项

    选项名说明
    backref 在关系的另一模型中添加反向引用
    primary join 明确指定两个模型之间使用的联结条件
    uselist 如果为False,不使用列表,而使用标量值
    order_by 指定关系中记录的排序方式
    secondary 指定多对多中记录的排序方式
    secondary join 在SQLAlchemy中无法自行决定时,指定多对多关系中的二级联结条件
    复制代码
    # coding:utf-8
    
    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    
    app = Flask(__name__)
    
    # mysql中创建数据库命令
    # mysql>create database db_python04 default charset=utf-8;
    复制代码
    复制代码
    class Config(object):
        """配置参数"""
        # sqlalchemy的配置参数
        SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/db_python04"
    
        # 设置sqlalchemy自动更跟踪数据库
        SQLALCHEMY_TRACK_MODIFICATIONS = True
    
    
    app.config.from_object(Config)
    
    # 创建数据库sqlalchemy工具对象
    db = SQLAlchemy(app)
    复制代码
    复制代码
    class Role(db.Model):
        """用户角色/身份表"""
        __tablename__ = "tbl_roles"
    
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(32), unique=True)

       # backref 反向查找的是role对象,这个字段在数据库表中不存在的 users = db.relationship("User", backref="role")    # 定义之后,可以让显示对象的时候更直观 def __repr__(self): """ 定义之后,可以让显示对象的时候更直观 """ return "Role object: name=%s" % self.name # 表名的常见规范 # ihome -> ih_user 数据库名缩写_表名 # tbl_user tbl_表名 # 创建数据库模型类 class User(db.Model): """用户表""" __tablename__ = "tbl_users" # 指明数据库的表名 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("tbl_roles.id")) def __repr__(self): return "User object: name=%s" % self.name
    复制代码

    数据迁移

    复制代码
    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()
    
        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()
    复制代码
     
  • 相关阅读:
    Python的注释
    Python的优缺点
    pymysql模块
    python(pymysql操作数据库)
    面向对象的测试用例设计有几种方法?如何实现?
    请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
    什么是兼容性测试?请举例说明如何利用兼容性测试列表进行测试。
    当开发人员说不是BUG时,你如何应付?
    性能测试的流程?
    您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)
  • 原文地址:https://www.cnblogs.com/adaicary/p/11810561.html
Copyright © 2020-2023  润新知