• 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()
    复制代码
     
  • 相关阅读:
    美达飞凡16X DVD起死回生记
    vs2k5 中asp.net "Web Site Administration Tool "使用中遇到的问题
    有关sqlserver的锁
    基于dotnet2.0的联通sgip1.2协议二级网关源码
    .net winform下TreeNode在没有子结点时也显示+号的解决办法
    小胜凭智, 大胜靠德
    寄语八十年代的新一代
    PHP+APACHE+MYSQL+WINDOWS 环境配置秘笈,一定行!!!!
    JS获取当前屏幕分辨率
    godaddy免费空间安装wordpress教程之500错误的解决办法/读写权限修改
  • 原文地址:https://www.cnblogs.com/adaicary/p/11810561.html
Copyright © 2020-2023  润新知