在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:dophon-db开源软件地址:https://gitee.com/callmee/dophon-db开源软件介绍:dophon-db项目介绍dophon框架的数据库模块,也可单独作为一个与数据库模块交互的部件 支持mysql数据库连接 支持orm形式的数据操作 如有疑问请发送邮件联系作者:[email protected] 软件架构模块架构分为以组件:
安装教程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执行脚本的一个集合,由于在实际开发中查询居多,简称结果集
mysql.xml<select id="findAll"> SELECT * FROM table</select>
from dophon.mysql import *_cursor=db_obj(mysql.xml,auto_fix=True)# 根路径为配置文件路径# 文件路径必须以/开头
result= _cursor.exe_sql(methodName='findAll')
动态参数传入: <select id="findAllById"> SELECT * FROM table WHERE id=#{id}</select> result= _cursor.exe_sql(methodName='findAllById',args={'id':'12345678'}) 骨架参数传入: <select id="findAllByTableName"> SELECT * FROM ${table_name}</select> result= _cursor.exe_sql(methodName='findAllByTableName',args={'table_name':'test_table'})
单条查询: <select id="findAllById"> SELECT * FROM table WHERE id=#{id}</select> result= _cursor.exe_sql_single(methodName='findAllById',args={'id':'12345678'})# result<dict> 列表查询: <select id="findAllById"> SELECT * FROM table WHERE id=#{id}</select> result= _cursor.exe_sql(methodName='findAllById',args={'id':'12345678'})# result<list> 队列查询: 1.列表形式: result= _cursor.exe_sql_queue( method_queue=['test1','test2'], args_queue=[ {'id':'123456','name':'tom'}, {} ])# result<dict># {# method_name:exec_result# } 2.字典形式: result= _cursor.exe_sql_obj_queue( queue_obj={ 'test1':{ 'id':'123456' }, 'test2':{} })# result<dict># {# method_name:exec_result# }
update_round(_cursor,1)# update_round(<cursor>,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 ormmanager = 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 = 123user.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 = 123print(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 = 123print(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的iduser2 = user1.copy_to_obj(manager.user) # 利用对象管理器实例中的模型模板进行对象获取print('user2', '---', id(user2)) # 打印对象2的idprint(user1('user_id'))user3 = user1.read_from_dict({ 'user_id': '111'}) # 利用模型对象中的翻译方法将字典生成一个新的模型对象print('user3', '---', id(user3)) # 打印对象3的id# 对比两者idprint(user1('user_id')) print(user3('user_id')) 参与贡献若有意向参与贡献,请留言或发送邮件至[email protected]
|
请发表评论