当前位置:网站首页>Flash operates on multiple databases
Flash operates on multiple databases
2022-04-23 17:59:00 【Feng Ye 520】
config.py:
SQLALCHEMY_BINDS = {
"db1": "mysql+pymysql://db_user1:[email protected]_host1:db_port1/db_name1?charset=utf8",
"db2": "mysql+pymysql://db_user2:[email protected]_host2:db_port2/db_name2?charset=utf8",
}
models.py:
def dynamic_model(bind_key, model_n):
properties = {
"__tablename__" = model_n.__tablename__,
"__bind_key__" = bind_key
}
for col in dir(model_n):
if col.startswith('_'):
continue
properties[col] = getattr(model_n, col)
model = type(model_n.__tablename__, (db.Model,), properties)
return model
Custom Serialization :
class Serialize:
def __init__(self, model):
self.query = model.query
self.model = model
self.columns = []
self.page_size = request.args.get('page_size', type=int, default=10)
self.current_page = request.args.get('page', default=1, type=int)
self.start = (self.current_page - 1) * self.page_size
self.end = self.start + self.page_size
self.field_func_map = {}
def field(self, *columns):
self.columns = columns
self.query = db.session.query(*[getattr(self.model, column) for column in columns])
return self
def search(self, **kw_map):
for column in kw_map:
if kw_map[column]:
self.query = self.query.filter(
getattr(self.model, column).like("%{}%".format('/' + kw_map[column]), escape='/'))
return self
def exclude(self, **kw_map):
for column in kw_map:
self.query = self.query.filter(
getattr(self.model, column) != kw_map[column])
return self
def custom_handle(self, **kargs):
self.field_func_map = kargs
return self
def to_json(self, **kw_map):
res = []
for column in kw_map:
self.query = self.query.filter(
getattr(self.model, column) == kw_map[column])
if self.columns:
for q in self.query.slice(self.start, self.end):
obj_dict = {}
for i, c in enumerate(self.columns):
if c in self.field_func_map:
obj_dict[c] = self.field_func_map[c.name](q[i])
else:
obj_dict[c] = q[i]
res.append(obj_dict)
else:
for q in self.query.slice(self.start, self.end):
obj_dict = {}
for c in class_mapper(q.__class__).columns:
if c.name in self.field_func_map:
obj_dict[c.name] = self.field_func_map[c.name](getattr(q, c.name))
else:
obj_dict[c.name] = getattr(q, c.name)
res.append(obj_dict)
return res
def total(self):
return self.query.count()
def data(self, **kw_map):
return {
'data': self.to_json(**kw_map),
'total': self.total(),
'currentPage': self.current_page,
'pageSize': self.page_size
}
版权声明
本文为[Feng Ye 520]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204230546133951.html
边栏推荐
- Crack sliding verification code
- 纳米技术+AI赋能蛋白质组学|珞米生命科技完成近千万美元融资
- Go file operation
- Flask项目的部署详解
- Data stream encryption and decryption of C
- 关于gcc输出typeid完整名的方法
- Submit local warehouse and synchronize code cloud warehouse
- Classification of cifar100 data set based on convolutional neural network
- Nat Commun|在生物科学领域应用深度学习的当前进展和开放挑战
- Click Cancel to return to the previous page and modify the parameter value of the previous page, let pages = getcurrentpages() let prevpage = pages [pages. Length - 2] / / the data of the previous pag
猜你喜欢
2022年茶艺师(初级)考试模拟100题及模拟考试
String function in MySQL
Flask项目的部署详解
Compilation principle first set follow set select set prediction analysis table to judge whether the symbol string conforms to the grammar definition (with source code!!!)
YOLOv4剪枝【附代码】
Random number generation of C #
C# 的数据流加密与解密
Cross domain settings of Chrome browser -- including new and old versions
Client example analysis of easymodbustcp
Click Cancel to return to the previous page and modify the parameter value of the previous page, let pages = getcurrentpages() let prevpage = pages [pages. Length - 2] / / the data of the previous pag
随机推荐
C# 网络相关操作
MySQL 中的字符串函数
Some questions some questions some questions some questions
Implementation of object detection case based on SSD
Nat Commun|在生物科学领域应用深度学习的当前进展和开放挑战
Element calculation distance and event object
Utilisation de la liste - Ajouter, supprimer et modifier la requête
Nanotechnology + AI enabled proteomics | Luomi life technology completed nearly ten million US dollars of financing
云原生虚拟化:基于 Kubevirt 构建边缘计算实例
Secure credit
2022年上海市安全员C证操作证考试题库及模拟考试
关于gcc输出typeid完整名的方法
Summary of floating point double precision, single precision and half precision knowledge
Client example analysis of easymodbustcp
The method of changing a value in the array and a value in the object of wechat applet
cv_ Solution of mismatch between bridge and opencv
Halo open source project learning (II): entity classes and data tables
587. 安装栅栏 / 剑指 Offer II 014. 字符串中的变位词
Go对文件操作
Notes on common basic usage of eigen Library