日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/11 42 豆豆

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多数据源配置...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。