dophon-db

项目介绍

dophon框架的数据库模块,也可单独作为一个与数据库模块交互的部件

支持mysql数据库连接

支持orm形式的数据操作

如有疑问请发送邮件联系作者:ealohu@163.com

软件架构

模块架构分为以组件:

mysql连接组件(包括连接池,连接封装类,分页,结果输出过滤器,远程接收器,增量检测)

orm映射组件(包括映射基础结构定义,映射封装工具,映射操作定义)

抽象工具集(包括结果集文件读取,解析,热更新,动态赋值等)

多数据源(xml,orm)管理器,已内嵌到相应模块中

安装教程

pip安装:

pip install dophon-db [--user]

使用说明

0. 配置相关

# 此处为数据库配置

pool_conn_num = 5 # size of db connect pool() # 数据库连接池连接数(默认5个)

pydc_host = 'localhost' # 数据库连接地址

pydc_port = 3306 # 数据库连接端口

pydc_user = 'username' # 数据库连接用户名

pydc_password = 'password' # 数据库连接密码

pydc_database = 'database' # 连接数据库名(可在后面跟连接参数)

pydc_xmlupdate_sech = False # 结果集映射调度开关

db_pool_exe_time = False # 连接池执行时间调试开关

# 多数据源配置(数据库表创建请看test/test.sql)

db_cluster = [

{

'alias': 'data-a',

'host': 'localhost',

'port': 3306,

'database': 'test1',

'user': 'root',

'password': 'root'

}, {

'alias': 'data-b',

'host': 'localhost',

'port': 3306,

'database': 'test2',

'user': 'root',

'password': 'root'

}, {

'alias': 'data-c',

'host': 'localhost',

'port': 3306,

'database': 'test3',

'user': 'root',

'password': 'root',

'tables':['a','user']

}, {

'alias': 'data-d',

'host': 'localhost',

'port': 3306,

'database': 'test4',

'user': 'root',

'password': 'root'

}

]

1. 结果集映射方式

结果集:sql执行脚本的一个集合,由于在实际开发中查询居多,简称结果集

通过xml文件规范若干结果集组成

mysql.xml

SELECT

*

FROM

table

通过代码关联xml文件,初始化结果集

from dophon.mysql import *

_cursor=db_obj(mysql.xml,auto_fix=True)

# 根路径为配置文件路径

# 文件路径必须以/开头

通过代码获取xml文件其中某一个结果集(以id区分)

result= _cursor.exe_sql(methodName='findAll')

支持动态参数传入(#{}形式)以及骨架参数传入(${形式})

动态参数传入:

SELECT

*

FROM

table

WHERE

id=#{id}

result= _cursor.exe_sql(methodName='findAllById',args={'id':'12345678'})

骨架参数传入:

SELECT

*

FROM

${table_name}

result= _cursor.exe_sql(methodName='findAllByTableName',args={'table_name':'test_table'})

支持单条查询,列表查询,队列查询(结果集id与参数列表的列表形式和字典形式)

单条查询:

SELECT

*

FROM

table

WHERE

id=#{id}

result= _cursor.exe_sql_single(methodName='findAllById',args={'id':'12345678'})

# result

列表查询:

SELECT

*

FROM

table

WHERE

id=#{id}

result= _cursor.exe_sql(methodName='findAllById',args={'id':'12345678'})

# result

队列查询:

1.列表形式:

result= _cursor.exe_sql_queue(

method_queue=['test1','test2'],

args_queue=[

{'id':'123456','name':'tom'},

{}

]

)

# result

# {

# method_name:exec_result

# }

2.字典形式:

result= _cursor.exe_sql_obj_queue(

queue_obj={

'test1':{

'id':'123456'

},

'test2':{}

}

)

# result

# {

# method_name:exec_result

# }

支持结果集文件热更新

update_round(_cursor,1)

# update_round(,second:int)

支持远程维护结果集文件

# remote_path为xml文件下载地址

remote_cell = remote.get_cell('test.xml', remote_path='http://127.0.0.1:8400/member/export/xml/test.xml')

_cursor = db_obj(remote_cell.getPath(), debug=True)

# 或者

_cursor = db_obj(remote_cell, debug=True)

2. 表模型映射方式

暂时支持单条事务操作

通过初始化模型管理器获取数据库表映射骨架

from dophon import orm

manager = orm.init_orm_manager(['user'])

通过实例化映射骨架获取表操作缓存实例(操作实例)

user = manager.user()

通过对操作实例赋值进行对对应表模拟操作

print('打印对象变量域')

for attr in dir(user):

print(attr, ":", eval("user." + attr))

print('开始对对象赋值')

user.user_id = 'id'

user.info_id = 'info_id'

user.user_name = 'user_name'

user.user_pwd = 'user_pwd'

user.user_status = 123

user.create_time = datetime.datetime.now().strftime('%y-%m-%d')

user.update_time = datetime.datetime.now().strftime('%y-%m-%d')

print('对象赋值完毕')

print('打印对象变量域')

for attr in dir(user):

print(attr, ":", eval("user." + attr))

print('打印对象参数表')

print(user([]))

print('user([]):', user([]))

print("user(['user_id','info_id']):", user(['user_id', 'info_id']))

print("user.get_field_list():", user.get_field_list())

print("user.alias('user_table').get_field_list():", user.alias('user_table').get_field_list())

通过对操作实例结构化操作对数据库对应表结构进行数据落地操作

# 打印对象操作语句(内部方法)

print(user.where())

print(user.values())

user.select() # 执行对象查询操作(未赋值对象执行全部查询)

user.user_name = '111' # 对对象某一属性赋值

user.select_one() # 执行单条条件查询(条件为对象已有值),复数结果时抛出异常

user.select_all() # 执行全部条件查询(条件为对象已有值)

user = manager.user() # 获取另一个模型对象

user.alias('u').select() # 对对象赋予别名并执行全部查询操作

user.user_name = '111' # 对对象某一属性赋值

user.alias('us').select_one() # 对对象赋予另一个别名并执行全部查询操作

user.alias('userr').select_all() # 对对象赋予另一个别名并执行全部查询操作

# 对对象某一属性赋值(属性类型与数据库类型相对应)

user.user_id='test_id' # 字符串类型

user.info_id='test_info_id'

user.user_name='test_user_name'

user.user_pwd='test_user_pwd'

user.user_status=1 # 数字类型

user.create_time = datetime.datetime.now().strftime('%y-%m-%d') # 日期类型

user.update_time = datetime.datetime.now().strftime('%y-%m-%d')

print(user.insert()) # 执行对象插入操作并打印操作结果

# 对对象某一属性赋值并选择其中某部分属性进行更新,其中指定了执行更新查询条件

user.user_id = 'test_id'

user.info_id = 'info_id'

user.user_name = '柯李艺'

user.user_pwd = '333'

user.user_status = 123

print(user.update(update=['user_name','user_pwd'],where=['user_id']))

# 对对象某一属性赋值并指定删除条件进行删除操作

user.user_id = 'test_id'

user.info_id = 'info_id'

user.user_name = 'user_name'

user.user_pwd = 'user_pwd'

user.user_status = 123

print(user.delete(where=['user_id']))

# 获取两个新的模型对象

user1=manager.user()

user2=manager.user()

# 打印对象1的全部查询结果

print(user1.select())

# 对对象1属性赋值

user1.user_name='early'

# 执行对象1左关联对象2,并指定关联关系(user1.user_id = user2.user_id)

user1.left_join(user2,['user_id'],['user_id'])

# 执行对象1左关联对象2,指定对象1别名(u1),对象2别名(u2),并指定关联关系(user1.user_id = user2.user_id)

user1.alias('u1').left_join(user2.alias('u2'),['user_id'],['user_id'])

# print(user1.exe_join())

# 打印对象1关联后的全部查询结果

print(user1.select())

"""

模型对象的复制与生成

"""

# 获取新的模型操作对象

user1 = manager.user()

print('user1', '---', id(user1)) # 打印对象1的id

user2 = user1.copy_to_obj(manager.user) # 利用对象管理器实例中的模型模板进行对象获取

print('user2', '---', id(user2)) # 打印对象2的id

print(user1('user_id'))

user3 = user1.read_from_dict({

'user_id': '111'

}) # 利用模型对象中的翻译方法将字典生成一个新的模型对象

print('user3', '---', id(user3)) # 打印对象3的id

# 对比两者id

print(user1('user_id'))

print(user3('user_id'))

参与贡献

若有意向参与贡献,请留言或发送邮件至ealohu@163.com

Fork 本项目

新建 Feat_xxx 分支

提交代码

新建 Pull Request

do与mysql数据类型对照_dophon-db: dophon框架的数据库模块,支持mysql,sqlite数据库,带有orm持久化功能与链式操作实例,贴近逻辑习惯,支持mysql多数据源配置...相关推荐

  1. 【转】Java MySQL数据类型对照

    Java MySQL数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.S ...

  2. java mysql 数据类型对照

    java mysql 数据类型对照 java mysql 数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N ...

  3. mysql修改工资字段_基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎)...

    基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎) 前言 本篇是基于Linux下针对MySQL表结构的修改,MySQL索引的操作以及MySQL数据引擎的配置和说明. ...

  4. 大话PHP设计模式:类自动载入、PSR-0规范、链式操作、11种面向对象设计模式实现和使用、OOP的基本原则和自动加载配置...

    一.类自动载入 SPL函数 (standard php librarys) 类自动载入,尽管 __autoload() 函数也能自动加载类和接口,但更建议使用 spl_autoload_registe ...

  5. Java数据类型和MySql数据类型对应表

    java mysql 数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CH ...

  6. msyql数据类型对照java类型

    Java MySQL数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.S ...

  7. Java 和 MySQL 数据类型对照表

    java mysql 数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CH ...

  8. mysql varchar类型实例_Mysql实例MySQL数据类型varchar详解

    <Mysql实例MySQL数据类型varchar详解>要点: 本文介绍了Mysql实例MySQL数据类型varchar详解,希望对您有用.如果有疑问,可以联系我们.1.varchar(N) ...

  9. 指定mysql jdbctype_MyBatis JdbcType 与Oracle、MySql数据类型对应关系说明

    1. Mybatis JdbcType与Oracle.MySql数据类型对应列表 Mybatis JdbcType Oracle MySql JdbcType ARRAY JdbcType BIGIN ...

最新文章

  1. Java递归基础案例-汉诺塔
  2. 调用Microsoft.Jet.OLEDB.4.0需要MDAC2.7支持
  3. java遍历树_Java实现遍历N级树形目录结构
  4. 完整学习git五git重置
  5. InfoPath2010表单-IE浏览器2个“微型内嵌工具”的使用和介绍
  6. LSTM公式详解推导
  7. .NET Core全面扫盲贴
  8. 遇到问题,尽量自己解决,实在解决不了再问别人
  9. 面试题大全-操作系统面试题
  10. [腾讯犀牛鸟开源人才培养计划]进入开源!
  11. python结巴怎么安装_Python3.6 结巴分词安装和使用
  12. 微信小程序 git代码管理使用的详细步骤
  13. 苹果显示器(Apple Cinema Display)连接Windows的亮度调节方法(Win10可用)
  14. 定时执行Python程式
  15. 动态链表头插法 和 动态尾插法
  16. 数据预处理 - 归一化与Z-Score标准化
  17. 一笔画 java_NYOJ42 一笔画问题
  18. 基于LC push的浏览器桌面提醒快速集成方案
  19. 2021这一年 | 用数字技术实现普惠金融
  20. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之27---BREW 应用定价

热门文章

  1. Tomcat 应用服务器如何设置 Web 服务目录精讲
  2. html文档基本结构由哪三对,第3章 网页制作及HTML语言基本结构简介.ppt
  3. linux终端常用快捷键
  4. python修改服务器ip,[python+Bat]读表修改机房IP
  5. gcc参数 -i, -L, -l, -include
  6. dict下如何取值_年薪百万之路--第十七天 装饰器(下)和迭代器
  7. oracle 结果集已耗尽_java.sql.SQLException: 结果集已耗尽
  8. flash 用 html 播放,使用flash插件在HTML上播放音频
  9. android sdk是灰的,Android Studio 2.3 sdk管理器标签灰显
  10. oracle的buffercache