增加数据库迁移命令和数据库初始化命令,分离schemas

This commit is contained in:
mkg
2021-06-12 23:05:30 +08:00
parent 5e08f3e49b
commit 14a32e6d3c
35 changed files with 198 additions and 174 deletions
+2 -1
View File
@@ -1,6 +1,7 @@
from applications.common.utils.validate import xss_escape
from applications.extensions import db
from applications.models import Dept, DeptSchema
from applications.models import Dept
from applications.schemas import DeptSchema
from applications.models import User
from applications.common.curd import model_to_dicts
+2 -1
View File
@@ -1,6 +1,7 @@
from applications.common.utils.validate import xss_escape
from applications.extensions import db
from applications.models import DictType, DictData, DictTypeSchema, DictDataSchema
from applications.models import DictType, DictData
from applications.schemas import DictTypeSchema, DictDataSchema
from applications.common.curd import model_to_dicts
+2 -1
View File
@@ -4,7 +4,8 @@ from sqlalchemy import desc
from applications.common.utils.upload import photos
from applications.extensions import db
from applications.models import Photo, PhotoSchema
from applications.models import Photo
from applications.schemas import PhotoSchema
from applications.common.curd import model_to_dicts
+1 -1
View File
@@ -3,7 +3,7 @@ from flask import session, make_response, current_app
from flask_login import current_user
from applications.common.utils.gen_captcha import gen_captcha
from applications.models.admin_power import PowerSchema
from applications.schemas import PowerSchema
# 授权路由存入session
+2 -1
View File
@@ -1,6 +1,7 @@
from applications.common.utils.validate import xss_escape
from applications.extensions import db
from applications.models.admin_power import Power, PowerSchema2
from applications.models.admin_power import Power
from applications.schemas import PowerSchema2
from applications.models import Role
from applications.common.curd import model_to_dicts
+4 -3
View File
@@ -1,9 +1,10 @@
from sqlalchemy import and_
from applications.common.utils.validate import xss_escape
from applications.extensions import db
from applications.models import Role, RoleSchema
from applications.models.admin_power import Power, PowerSchema2
from applications.models import Role
from applications.schemas import RoleSchema
from applications.models.admin_power import Power
from applications.schemas import PowerSchema2
from applications.models import User
# 获取角色对象
+2 -1
View File
@@ -2,7 +2,8 @@ from flask import jsonify
from flask_login import current_user
from sqlalchemy import and_, desc
from applications.extensions import db
from applications.models import User, UserSchema
from applications.models import User
from applications.schemas import UserSchema
from applications.models import Role
from applications.models import AdminLog
+2 -2
View File
@@ -3,12 +3,12 @@ from flask import jsonify
def success_api(msg: str = "成功"):
""" 成功响应 默认值”成功“ """
return jsonify(success=True, message=msg)
return jsonify(success=True, msg=msg)
def fail_api(msg: str = "失败"):
""" 失败响应 默认值“失败” """
return jsonify(success=False, message=msg)
return jsonify(success=False, msg=msg)
def table_api(msg: str = "", count=0, data=None, limit=10):
@@ -0,0 +1,64 @@
from dotenv import dotenv_values
import sqlparse
import pymysql
config = dotenv_values('.env')
# MySql配置信息
HOST = config.get('MYSQL_HOST') or '127.0.0.1'
PORT = config.get('MYSQL_PORT') or 3306
DATABASE = config.get('MYSQL_DATABASE') or 'PearAdminFlask'
USERNAME = config.get('MYSQL_USERNAME') or 'root'
PASSWORD = config.get('MYSQL_PASSWORD') or '123456'
def is_exist_database():
db = pymysql.connect(host=HOST, port=int(PORT), user=USERNAME, password=PASSWORD, charset='utf8mb4')
cursor1 = db.cursor()
sql = "select * from information_schema.SCHEMATA WHERE SCHEMA_NAME = '%s' ; " % DATABASE
res = cursor1.execute(sql)
db.close()
return res
def init_database():
db = pymysql.connect(host=HOST, port=int(PORT), user=USERNAME, password=PASSWORD, charset='utf8mb4')
cursor1 = db.cursor()
sql = "CREATE DATABASE IF NOT EXISTS %s" % DATABASE
res = cursor1.execute(sql)
db.close()
return res
def execute_fromfile(filename):
db = pymysql.connect(host=HOST, port=int(PORT), user=USERNAME, password=PASSWORD, database=DATABASE,
charset='utf8mb4')
fd = open(filename, 'r', encoding='utf-8')
cursor = db.cursor()
sqlfile = fd.read()
sqlfile = sqlparse.format(sqlfile, strip_comments=True).strip()
sqlcommamds = sqlfile.split(';')
for command in sqlcommamds:
try:
cursor.execute(command)
db.commit()
except Exception as msg:
db.rollback()
db.close()
def init_db():
if is_exist_database():
print('数据库已经存在,为防止误初始化,请收动删除 %s 数据库' % str(DATABASE))
return
if init_database():
print('数据库%s创建成功' % str(DATABASE))
execute_fromfile(BASE_DIR + '../../../test/pear.sql')
print('表创建成功')
print('欢迎使用pear-admin-flask,请使用 flask run 命令启动程序')
if __name__ == '__main__':
init_db()