在操作数据库的业务里,我们系统采用了orm框架 ,避免了过多的写sql,利用实体对数据库进行操作

需求: 账户系统里的account表是进行了分表,分表规则为accountid进行20取模,测试环境分为多套环境

a,b,c环境,需要在对数据库操作时区分环境

1、使用sqlalchemy

base = declarative_base()

def get_model(name,env):

if. env =='a':

engine = create_engine('mysql+pymysql.....这里是a环境的配置')

elif env =='b':

.......

base.metadata.reflect(engine)

table = base.metadata.table[name]

mapper(t, table)

Base.metadata.clear()

return t

当然这里的参数name是需要额外做处理的,因为存在分表的规则,所以需要在先得到具体的表名再找到对应的model

2、使用flask_sqlalchemy

通过元类编程找出对应的model

class Account(object):

__mapper = {}
   @staticmethod
   def model( account_id, env = 'c'):
   if env == 'c':
      app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@xxxx'
   else :
     app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@xxx'
   app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
   db =SQLAlchemy(app)
   table_index = account_id%20
   class_name='account_%d' % table_index
   ModelClass = Account.__mapper.get(class_name, None)
   if ModelClass is None:
        ModelClass = type(class_name, (db.Model,),
           {
             '__module__':__name__,
             '__name__':class_name,
             '__tablename__':'account_%d' % table_index,
             'account_id':db.Column(db.Integer, primary_key=True),
             'main_id':db.Column(db.Integer)

})
      Account.__mapper[class_name]=ModelClass

cls = ModelClass()
      cls.account_id = account_id
   return cls

Python 对于分表的操作的更多相关文章

  1. Mycat读写分离、主从切换、分库分表的操作记录

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  2. python笔记8-列表list操作、多维数组

    #!/usr/bin/python #python里面有个这个话,代表在linux下运行的时候#去哪个目录下找python的解释器,在windows上运行不用写# coding:utf-8# __*_ ...

  3. mysql分表和表分区详解

    为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能 ...

  4. 【mysql】mysql分表和表分区详解

    为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能 ...

  5. 【MySQL】MySQL中针对大数据量常用技术_创建索引+缓存配置+分库分表+子查询优化(转载)

    原文地址:http://blog.csdn.net/zwan0518/article/details/11972853 目录(?)[-] 一查询优化 1创建索引 2缓存的配置 3slow_query_ ...

  6. 支持MySql的数据库自动分表工具DBShardTools发布

    支持MySql的数据库自动分表工具DBShardTools发布 前段时间参与了公司的一个项目,这个项目的特点是数据量.访问量都比较大,考虑使用数据库水平分表策略,Google了大半天,竟然没有找到分表 ...

  7. MySQL分表

    一.概念 1.为什么要分表和分区?日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询 ...

  8. 浅谈MySQL分表

    关于分表:顾名思义就是一张数据量很大的表拆分成几个表分别进行存储. 我们先来大概了解以下一个数据库执行SQL的过程: 接收到SQL --> 放入SQL执行队列 --> 使用分析器分解SQL ...

  9. DBA 小记 — 分库分表、主从、读写分离

    前言 我在上篇博客 "Spring Boot 的实践与思考" 中比对不同规范的 ORM 框架应用场景的时候提到过主从与读写分离,本篇随笔将针对此和分库分表进行更深入地探讨. 1. ...

随机推荐

  1. Python CGI编程Ⅴ

    通过CGI程序传递 Textarea 数据 Textarea 向服务器传递多行数据,HTML代码如下: textarea.py 脚本代https://www.xuanhe.net/码如下: 修改 te ...

  2. C# 4.0

    序言 动态绑定-dynamic class Program { static void Main(string[] args) { ; ; // Rest the mouse pointer over ...

  3. Remove the Substring

    D2. Remove the Substring (hard version) 思路:其实就是贪心吧,先从前往后找,找到 t 可在 s 中存在的最小位置 (pre),再从后往前找,找到 t 可在 s ...

  4. Docker入门-常用命令

    Docker镜像操作 Docker运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker会从镜像仓库下载该镜像. 获取镜像 从Docker镜像仓库获取镜像的命令是docker pull. ...

  5. 20175212童皓桢 实验四 Android程序设计

    20175212童皓桢 实验四 Android程序设计 实验内容 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>并完成相关 ...

  6. python3笔记十二:python数据类型-Dictionary字典

    一:学习内容 字典概念 字典创建 字典访问 字典添加 字典删除 字典遍历 字典与列表比较 二:字典概念 1.使用键值对(key-value)存储,具有极快的查找速度 2.注意:字典是无序的 3.特性: ...

  7. MSO Transponder 页面开发思路

    1. 确定Transponder开发页面分类,定义负责模块 2. 定义模块页面布局 3. 选择页面各数据对应的控件类型 4. 选定控件对应set/get所用方式 快捷键链接设置: http://www ...

  8. tensorflow实现LeNet-5模型

    网络结构如下: INPUT: [28x28x1] weights: 0 CONV5-32: [28x28x32] weights: (5*5*1+1)*32 POOL2: [14x14x32] wei ...

  9. if && grep

    if    条件  then         Command else         Command fi                               别忘了这个结尾 ——————— ...

  10. jenkins部署java项目

    #########################################jenkins部署#################################3 一.jenkins是什么? J ...