• MySQL ORM peewee的数据库迁移管理peewee_migrate


    peewee是一个单文件的MySQL ORM库,使用peewee_migrate管理数据库迁移,使用peewee_async异步操作数据库(配合tornado).

    1 datum.py 数据库定义

    from datetime import datetime
    from werkzeug.security import generate_password_hash, check_password_hash
    from peewee import Model, CharField, DateTimeField, BooleanField, IntegerField, FloatField, SmallIntegerField
    from configs import config
    import peewee_async

    实例化,需要安装aiomysql,在tornado.web.Application定义时绑定异步操作的对象.
    database = peewee_async.PooledMySQLDatabase(

    config.get('mysql_db'), host=config.get('mysql_host'), port=config.get('mysql_port'),
    user=config.get('user'), password=config.get('pwd'),
    min_connections=10,
    max_connections=50
    

    )

    class BaseModel(Model):

    """模型基类,为每个模型补充创建时间与更新时间"""
    create_time = DateTimeField(default=datetime.now, formats='%Y-%m-%d %H:%M:%S', verbose_name='创建时间')  # 记录的创建时间
    update_time = DateTimeField(default=datetime.now, formats='%Y-%m-%d %H:%M:%S', verbose_name='更新时间')  # 记录的更新时间
    
    

    class User(BaseModel):

    """用户"""
    
    # 1 基本信息
    cell_phone = CharField(max_length=11, unique=True, null=False, verbose_name='手机号')  # 手机号
    
    share_code = CharField(max_length=8, unique=True, verbose_name='邀请码')   # 邀请码
    normal = BooleanField(default=True, verbose_name='用户状态')  # 是否正常,默认正常,用户要求冻结用户,可冻结
    
    class Meta:
        database = database
        db_table = 'uc_user'
    

    2 vcm.py 版本管理

    -- coding: utf-8 --

    """
    数据库迁移管理,更新字段后直接运行该文件
    """
    import sys
    import os.path

    sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
    from peewee_migrate import Router
    from db import datum
    from db.datum import database

    database.connect()

    router = Router(database, ignore='basemodel')

    router.create(auto=datum)
    router.run()
    database.close()

    NOTE:vcm.py datum.py在db这个python package里,数据库定义字段改变,直接运行vcm.py即可更新.

  • 相关阅读:
    数据库的三大范式以及五大约束
    解析PHP面向对象的三大特征
    php中的数组遍历的几种方式
    PHP中的函数声明与使用
    使用mui框架打开页面的几种不同方式
    JS中精选this关键字的指向规律你记住了吗
    同一功能三种不同实现方式你选哪个
    转!!NPM报错 Error: EPERM: operation not permitted, unlink......解决办法和清除缓存。
    转!!关于http请求 浏览器 中文编码
    CentOS6.5下Apache防止目录遍历
  • 原文地址:https://www.cnblogs.com/nanhe/p/12435323.html
Copyright © 2020-2023  润新知