def add_error(nums: int): create_app().app_context().push() es = ['功能问题', "性能问题", "界面问题", "设计问题", "其他"] for i in range(len(es)): ErrorType(name=es[i], productId=9).save() print("ok")
def add_user(nums: int): create_app().app_context().push() for i in range(nums): User(account=f.cname(), name=f.name(), password=f.password(), admin=True, department=random.randint(1, 10),email=f.email(), phone=f.phone_number(), gender=random.choice([True, False])).save() print("ok")
class SearchParamsParse: from APP import create_app from sqlalchemy import create_engine condition = ["in", "not in", "=", ">", "<"] OR = "or " AND = "and " sql = f"select * from bugs where " eng = create_engine(create_app().config['SQLALCHEMY_DATABASE_URI'], echo=False) def __init__(self, body: list, opt: str): self.option = opt self.body = self._verify(body) self.param = None def _verify(self, body: list) -> list: for b in body: if not b.get("key") and not b.get("condition") and not b.get( "val"): abort( myResponse(ResponseCode.SQL_PARAM_ERROR, None, ResponseError.INVALID_PARAMS)) if b.get("condition") not in self.condition: abort( myResponse(ResponseCode.SQL_PARAM_ERROR, None, errorValue(b.get('condition')))) return body def _paramParse(self): sql = "" if self.option == self.OR: for b in self.body: s = " ".join([ b.get("key"), b.get("condition"), '"' + str(b.get('val')) + '"', self.OR ]) sql += s else: for b in self.body: s = " ".join([ b.get("key"), b.get("condition"), '"' + str(b.get('val')) + '"', self.AND ]) sql += s return sql.strip("and ") def filter(self) -> list: sql = self.sql + self._paramParse() try: res = self.eng.execute(sql) return res.fetchall() except Exception as e: abort( myResponse(ResponseCode.SQL_ERROR, None, ResponseError.SOME_ERROR_TRY_AGAIN))
======================================选择环境================================================ ''' ''' os.getenv('FLASK_ENV') ""获取一个环境变量,如果它不存在,返回None。 可选的第二个参数可以指定另一个默认值。 key, default和结果是str 输入也是str""" ''' config_name = os.getenv('FLASK_ENV') or 'default' # Terminal 命令 export FLASK_ENV=default ''' =====================================创建__init__完后的app==================================== ''' app = create_app(config_name) ''' =====================================创建管理app对象========================================= ''' manager = Manager(app) ''' ==================================向manager添加一条数据库命令========================================== ''' # 向manager添加一条db命令,参数是MigrateCmmand manager.add_command('db', MigrateCommand) ''' 命令有: manage.py: error: invalid choice: 'help' (choose from 'db', 'shell', 'runserver') python manage.py db -- 查看有什么命令方法 -- init初始化 创建migration file -- migrate -- 生成迁移表
# -*- coding:utf-8 -*- # @TIME : 2018/10/15 20:46 # @AUTHOR : LXH # @FILE : manage.py # 程序入口,安装app给manage控制程序启动 # 导入app初始化方法 from APP import create_app # 导入运行脚本 from flask_script import Manager # 导入环境 import os # 'FLASK_ENV'为环境变量名,可设置,可去config文件去查找,通用环境,做修改 # [注意:要运行一次命令]Terminal: export FLASK_ENV=default # 设置这两个先相等,这里的FLASK_ENV也就相当于形参的作用 config_name = os.getenv('FLASK_ENV') or 'default' app = create_app(config_name) # 获得环境变量后,在此实例化出来 manager = Manager(app) # 把app交给manager控制程序的启动 # 测试运行 @app.route('/hello/') def hello(): return 'ok' if __name__ == '__main__': manager.run()
from APP import models from APP import create_app from flask_script import Manager from flask_migrate import Migrate #用了同步数据库 from flask_migrate import MigrateCommand from gevent import monkey monkey.patch_all() app = create_app("running") # manager = Manager(app) # migrate = Migrate(app, models) manager.add_command("db", MigrateCommand) @manager.command def runserver_gevent(): from gevent import pywsgi server = pywsgi.WSGIServer(("127.0.0.1", 5000), app) server.serve_forever() if __name__ == '__main__': manager.run()
class SqlOpt: eng = create_engine(create_app().config['SQLALCHEMY_DATABASE_URI'], echo=False) conditions = ["like", "=", ">", "<"] opts = ['and', "or"] def __init__(self, table): self.table = table def select(self, params: list, targets: list = None, limit=None): """ select title, level from bugs where id > 1 and level = 'p1' :targets:[title, level] :params: [{"key": "id", "val": 2, "condition": "=", "opt": "or"}, {"key": "id", "val": 3, "condition": "=", "opt": "or"}, {"key": "title", "val": "004", "condition": "like", "opt": "or"}] :return: """ params = self._verify(params) if targets: sql = f"SELECT {', '.join([k for k in targets])} FROM {self.table} WHERE " else: sql = f"SELECT * FROM {self.table} WHERE " for param in params: s = " ".join([ param.get("key"), param.get("condition").upper(), f' "' + str(param.get('val')) + '" ' + f"{param.get('opt')} ".upper() ]) sql += s sql = sql.rstrip(f"AND ").rstrip("OR ") return self._doSelect(sql, limit) def update(self, params: list, targets: list, opt: str = "and") -> bool: """ update table set title = 'test' where id =1 and p1 :params: [{"key":"id",condition:[ ">"|"<"|"=" ],"val":"1"},] ;targets [{"key":""title","val":"test"},{"key":"level","val":"p1"}] :return: """ params = self._verify(params) tar = "" for i in targets: tar += i["key"] tar += " = " tar += f"'{i['val']}'" tar += ", " tar = tar.strip(", ") sql = f"UPDATE {self.table} SET {tar} WHERE " if len(params) > 1: for param in params: s = " ".join([ param.get("key"), param.get("condition"), '"' + str(param.get('val')) + '" ' + f"{opt} ".upper() ]) sql += s sql = sql.rstrip(f"{opt} ".upper()) else: param = params[0] s = " ".join([ param.get("key"), param.get("condition"), '"' + str(param.get('val')) + '"' ]) sql += s try: self.eng.execute(sql) log.info(f"sql: {sql}") return True except Exception as e: log.error(e) return False def insert(self, params: list): """ insert into table values (val1,val2) insert into table (const1,const2) values (val1,val2) :param [{"key":"name","val":"cyq"] :return: """ const = list() values = list() for param in params: const.append(param['key']) values.append(f"'{str(param['val'])}'") sql = f"INSERT INTO {self.table} ({','.join(const)}) VALUES ({','.join(values)}) " try: self.eng.execute(sql) log.info(f"sql: {sql}") return True except Exception as e: log.error(e) return False def delete(self, params: list, opt: str = "") -> bool: """ delete from table where k=v :params: [{"key":"id",condition:[ ">"|"<"|"=" ],"val":"1"},] :opt : AND OR None :return: """ sql = f"DELETE FROM {self.table} WHERE " params = self._verify(params) for param in params: s = " ".join([ param.get("key"), param.get("condition"), '"' + str(param.get('val')) + '" ' + f"{opt} ".upper() ]) sql += s sql = sql.rstrip(f"{opt} ".upper()) try: self.eng.execute(sql) log.info(f"sql: {sql}") return True except Exception as e: print(e) log.error(e) return False def _doSelect(self, sql, limit) -> list: try: res = self.eng.execute(sql) log.info(f"sql: {sql}") if limit: return res.fetchmany(limit) else: return res.fetchall() except Exception as e: log.error(e) return [] def _verify(self, body: list) -> list: for param in body: if not param.get("key") and not param.get( "condition") and not param.get("val") and not param.get( "opt"): abort( myResponse(ResponseCode.SQL_PARAM_ERROR, None, errorValue(""))) if param.get("condition") not in self.conditions: abort( myResponse(ResponseCode.SQL_PARAM_ERROR, None, errorValue(param.get('condition')))) if param.get("condition") == "like": param['val'] = f"%{param['val']}%" if param.get("opt") not in self.opts: abort( myResponse(ResponseCode.SQL_PARAM_ERROR, None, errorValue(param.get('opt')))) return body
def add_project(nums: int): create_app().app_context().push() for i in range(nums): Project(name=f.company()).save() print("ok")
def setUp(self): self.app = create_app(TestConfig) self.app_context = self.app.app_context() self.app_context.push() db.create_all()
def add_version(nums: int): create_app().app_context().push() for i in range(nums): Build(name=f.ipv4(), productId=9).save() print("ok")
def add_platform(nums: int): create_app().app_context().push() p = ['Ios', "Andriod", "Windows", "Web", "Mac"] for i in range(len(p)): Platform(name=p[i], productId=9).save() print("ok")
def add_solution(nums: int): create_app().app_context().push() s = ['设计如此', '重复缺陷', '不予解决', '无法重现', '已解决', '信息不足', '设计如此', '其他'] for i in range(len(s)): Solution(name=s[i], productId=9).save() print('ok')
def add_product(nums: int): create_app().app_context().push() Product(name="cyqProduct",projectId=11).save() print("ok")
def add_department(nums: int): create_app().app_context().push() for i in range(nums): Department(name=f.job()).save() print("ok")
# -*- coding:utf-8 -*- # @Time : 2020/3/8 12:47 # @Author : Bravezhangw # @File : manage.py.py # @Software: PyCharm # @Organization : NJU # @email : [email protected] import os from flask_script import Manager from flask_migrate import MigrateCommand from APP import create_app env = os.environ.get("FLASK_ENV", "develop") app = create_app(env) manager = Manager(app) manager.add_command("db", MigrateCommand) if __name__ == '__main__': manager.run()
#! /usr/bin/env python # -*- coding: utf-8 -*- """ 本文件是flask项目的启动脚本 常用命令包括: 1. python manage.py runserver 启动服务进程(单线程) 2. python manage.py db init/migrate/upgrade 管理数据库 """ import os import sys from APP import create_app, db from flask_script import Manager from flask_migrate import Migrate, MigrateCommand sys.path.append('APP/ssd/') sys.path.append('APP/fasterrcnn/') app = create_app(os.getenv('APP_CONFIG') or 'default') manager = Manager(app) migrate = Migrate(app, db) manager.add_command('db', MigrateCommand) if __name__ == '__main__': manager.run()
def add_module(): create_app().app_context().push() mo = ['登陆',"注册","联系人","通话","收藏","删除"] for i in mo: Module(name=i,productId=9).save()
import unittest from APP import create_app from faker import Faker app = create_app() class MyTestCase(unittest.TestCase): def setUp(self) -> None: app.testing = True self.f = Faker() self.body = { "account": self.f.name(), "name": self.f.name(), "password": self.f.password(), "admin": True, "gender": False } self.client = app.test_client() def test_something(self): self.assertEqual(True, False) if __name__ == '__main__': unittest.main()
import os from flask_migrate import MigrateCommand, Migrate from APP.user.models import UserModel, post_tag, PostsModel from flask_script import Manager from APP import create_app, config from APP.extension import db # 导入所有app配置 app = create_app(config) # 命令行 manager = Manager(app) # 数据库迁移 migrate = Migrate(app, db) manager.add_command("db", MigrateCommand) # python manage.py db init # python manage.py db migrate # python manage.py db upgrade # celery -A task.celery worker --loglevel=info if __name__ == '__main__': manager.run()