成人黄网站A片免费观看,欧美人妻少妇精品久久黑人,国产内射999视频一区,国产成年女人毛片80S网站

Section Menu:  

KGCMS數(shù)據(jù)庫操作對象:kyger.db.MySQL

  • 發(fā)布時間: 2019-08-28 00:00
  •    閱讀: 5288   

調(diào)用

    1.在項目的web目錄下的py文件通過定義接口KgcmsApi類,就可以直接調(diào)用self.db來操作數(shù)據(jù)庫。
class KgcmsApi(object):
    """產(chǎn)品模塊類"""

    def __init__(self):
        """初始化數(shù)據(jù)"""
        pass
    
    def __call__(self):
        """接口文件"""
        return self.db.__doc__
    2.在項目的kyger目錄中的模塊如果需要操作數(shù)據(jù)庫,需要在web目錄下的py文件中將self.db做為參數(shù)傳遞:
# 文件目錄:web/article.py。 創(chuàng)建實例article時將self.db當做參數(shù)傳遞。
class KgcmsApi(object):
    """KGCMS框架接口"""

    def __init__(self):
        pass

    def __call__(self):
        from kyger.article import Article
        article = Article(self.db)
        return 0
# 文件目錄:kyger/article.py
class Article(object):
    """文章調(diào)用"""
    # 構(gòu)造函數(shù)
    def __init__(self, db=None):
        # 如果創(chuàng)建實例時將db傳遞過來則直接賦值給self.db使用,如果沒有則需要創(chuàng)建
        from kyger.db import MySQL
        self.db = db if db else MySQL()  # 防止因為沒有傳遞self.db導致操作數(shù)據(jù)庫出錯

方法1:add()

    ● 描述
         往指定的表里插入數(shù)據(jù),SQL語句:INSERT INTO  `kgcms`.`kg_admin` (`id` ,`username`) VALUES (NULL , 'kyger'),。
    ● 語法
add(table, data, log=True)
    ● 參數(shù)
         table [str]:表名,不包含前綴。
         data [str]:要插入的數(shù)據(jù)字典,對應的字段名及值: {'id':'NULL','username':'kyger'}。
         log [bool]:是否記錄操作日志, 一般情況下建議開啟。
    ● 返回值
         返回一個字符串或0。
    ● 實例
data = {
   'username': 'admin',
   'password': '123456',
   'encryption': 0,
}
return self.db.add('admin', data)  # 往admin表中添加數(shù)據(jù)
    ● 結(jié)果
'23'  # 返回插入數(shù)據(jù)的id

方法2:dele()

    ● 描述
         刪除數(shù)據(jù)操作,SQL語句:DELETE FROM `kg_admin` WHERE `kg_admin`. `id` = 20;。
    ● 語法
dele(table, where, limit=0, log=True)
    ● 參數(shù)
         table [str]:表名,不包含前綴。
         where [int|str]:條件, 如果int類型將視為id;其它視為條件語句: 20|`username` = 'kyger' && ...
                         不支持刪除全部,但可使用條件 1=1 達到刪除部分數(shù)據(jù)。
         limit [int]:刪除的記錄條數(shù)。
         log [bool]:是否記錄操作日志, 建議開啟。
    ● 返回值
         返回一個int類型數(shù)據(jù)。
    ● 實例
return self.db.dele('article', 14)
return self.db.dele('article', '`id` >13')
    ● 結(jié)果
1  # 返回刪除的數(shù)據(jù)條數(shù)

方法3:edit()

    ● 描述
         修改/更新數(shù)據(jù),SQL語句:UPDATE `kg_admin` SET `password` = '999' WHERE `kg_admin`.`id` = 2;。
    ● 語法
edit(table, data, where=None, limit=0, log=True)
    ● 參數(shù)
         table [str]:表名,不包含前綴。
         data [dict]:要修改的字段名及值:{'username':'kyger', 'password': '123456'}。
         where [int|str]:條件,如果是一個數(shù)字將視為id;為0時忽略條件,將更新所有記錄; 其它視為條件語句::20|`username` = 'kyger' && ...。
         limit [int]:影響的記錄數(shù),0時不限制。
         log [bool]:是否記錄操作日志, 建議開啟。
    ● 返回值
         返回一個int類型數(shù)據(jù)。
    ● 實例
return self.db.edit('admin', {'username':'kyger', 'password': '123456'}, 5, 1)
    ● 結(jié)果
1  # 返回影響的數(shù)據(jù)條數(shù)

方法4:field_list()

    ● 描述
         獲取數(shù)據(jù)表里所有的字段名屬性。
    ● 語法
field_list(table, log=True)
    ● 參數(shù)
         table [str]:表名,不包含前綴。
         log [bool]:是否記錄操作日志, 建議開啟。
    ● 返回值
         返回一個列表。
    ● 實例
return self.db.field_list('test')
    ● 結(jié)果
# 獲取數(shù)據(jù)表里所有的字段名和屬性
[{'Field': 'id', 'Type': 'int(11) unsigned', 'Null': 'NO', 'Key': '', 'Default': None, 'Extra': ''}, {'Field': 'test', 'Type': 'int(11) unsigned zerofill', 'Null': 'NO', 'Key': '', 'Default': None, 'Extra': ''}]

方法5:lastrowid()

    ● 描述
         獲取上一步 INSERT 操作產(chǎn)生的ID。
    ● 語法
lastrowid()
    ● 參數(shù)
         無參數(shù)。
    ● 實例
return self.db.lastrowid()
    ● 結(jié)果
5  # 上一次插入數(shù)據(jù)的id

方法6:list()

    ● 描述
         查詢數(shù)據(jù),查詢中所有的表名前綴使用{pr}代替。
    ● 語法
list(table, field='*', where=0, order=0, page=0, limit=30, shift=0, log=False)
    ● 參數(shù)
         table [str]:表名,form語句,或多表關聯(lián),前綴使用 {pr} 代替,單個表名時不需要加前綴。
         field [str]:查詢的字段,默認為 *。
         where [str]:條件語句, 如果是一個 int 值,則自動轉(zhuǎn)化為:WHERE `id` = "%s"'。
         order [str]:排序:`id` ASC, `name` DESC。
         page [int]:當前頁碼,是否分頁,0不分頁;其它數(shù)字為頁碼;分頁時可以通過 total 獲取總記錄數(shù)。
         limit [int|str]:分頁時只填寫一個數(shù)字,每頁要顯示的記錄數(shù): '0, 30'|10。
         shitf [int]:是否將二維列表成一維,1轉(zhuǎn)成一維、0不轉(zhuǎn)換,查詢單條記錄時非常有用。
         log [bool]:是否記錄操作日志, 查詢敏感數(shù)據(jù)時建議開啟。
    ● 返回值
         返回一個列表。
    ● 實例
return self.db.list(
	table='`{pr}admin` as a',
	field='a.`id`, a.`username`',
	where='`id`>4 && `id`<100',
	order='`id` ASC, `username` DESC',
	page=2,
	limit=3,
	log=True,
)
    ● 結(jié)果
[{'id': 90, 'username': 'admin'}, {'id': 92, 'username': 'kgcms888'}, {'id': 93, 'username': 'kgcms2'}]

方法7:log()

    ● 描述
         獲取數(shù)據(jù)庫操作日志記錄。
    ● 語法
log(type=1, info={'state': 'SUCCESS'})
    ● 參數(shù)
         type [int]:日志類型(1查詢敏感數(shù)據(jù)/2添加數(shù)據(jù)/3修改數(shù)據(jù)/4刪除數(shù)據(jù)/5其它數(shù)據(jù)庫操作/6后臺管理員登錄/7上傳文件)。
         info [dict]:MySQL json。state: [SUCCESS|FAILURE] 結(jié)果。
    ● 返回值
         無返回值。
    ● 實例
return self.db.log(type=5, info={'state': 'SUCCESS'})
    ● 結(jié)果
# 暫無結(jié)果

方法8:processlist()

    ● 描述
         查詢當前對應的 MySQL 帳戶運行的線程,查看MySQL連接列表。
    ● 語法
processlist()
    ● 參數(shù)
         無參數(shù)
    ● 返回值
         返回一個列表。
    ● 實例
return self.db.processlist()
    ● 結(jié)果
[{'Id': 72535, 'User': 'kgcms', 'Host': '163.179.46.37:63341', 'db': 'kgcms', 'Command': 'Query', 'Time': 0, 'State': 'starting', 'Info': 'SHOW FULL PROCESSLIST'}]

方法9:run_sql()

    ● 描述
         自定義查詢, 直接查詢SQL。
    ● 語法
run_sql(sql, act='list', log=True)
    ● 參數(shù)
         sql [str]:要執(zhí)行的sql語句。
         act [str]:add:返回插入后的ID,list:返回list數(shù)據(jù),act=edit|dele:返回影響的數(shù)據(jù)條數(shù)。
         log [bool]:是否記錄操作日志, 建議開啟。
    ● 返回值
         返回一個列表。
    ● 實例
return self.db.run_sql('select id,username from kg_admin where id=83', 'list')
return self.db.run_sql('insert into kg_admin(id,username) value(100,"kgtest")', 'add')
return self.db.run_sql('update kg_admin set username="kg" where id=100', 'edit')
pre class="brush:python;toolbar:false">return self.db.run_sql('delete from kg_admin where id=100', 'dele')     ● 結(jié)果
[{'id': 83, 'username': 'kgcms'}]
100  # 返回插入的id
1  # 返回影響的條數(shù)
1  # 返回影響的條數(shù)

方法10:table_list()

    ● 描述
         獲取當前庫中所有的數(shù)據(jù)表表名。
    ● 語法
table_list(log=True)
    ● 參數(shù)
         log [bool]:是否記錄操作日志, 建議開啟。
    ● 返回值
         返回一個列表。
    ● 實例
return self.db.table_list()
    ● 結(jié)果
['kg_ad', 'kg_admin', 'kg_article', 'kg_category', 'kg_guestbook']

方法11:timeout()

    ● 描述
         獲取MySQL自動斷開連接時效。
    ● 語法
timeout()
    ● 參數(shù)
         無參數(shù)。
    ● 返回值
         返回一個字典。
    ● 實例
return self.db.timeout()
    ● 結(jié)果
{'Variable_name': 'connect_timeout', 'Value': '10'}

方法12:version()

    ● 描述
         獲取MySQL版本號。
    ● 語法
version()
    ● 參數(shù)
         無參數(shù)。
    ● 返回值
         返回一個字符串。
    ● 實例
return self.db.version()
    ● 結(jié)果
'5.7.24'

方法13:open()

    ● 描述
         打開數(shù)據(jù)庫連接。
    ● 語法
open()
    ● 參數(shù)
         無參數(shù)。
    ● 返回值
         返回布爾類型。
    ● 實例
return self.db.open()
    ● 結(jié)果
Ture

方法14:close()

    ● 描述
         關閉數(shù)據(jù)庫連接。
    ● 語法
close()
    ● 參數(shù)
         無參數(shù)。
    ● 返回值
         返回布爾類型或字符串。
    ● 實例
return self.db.close()
    ● 結(jié)果
'tools.pymysql.err.Error: Already closed'

屬性

    1. total_rows:查詢到的總記錄條數(shù)
self.db.total_rows  # 調(diào)用總記錄條數(shù)
    2. total_page:查詢到的總頁數(shù)
self.db.total_page  # 調(diào)用總頁數(shù)
    3. sql:查詢的sql語句
self.db.sql  # 調(diào)用執(zhí)行的sql語句
    4. request_count:當前頁請求數(shù)據(jù)庫的次數(shù),包括查詢、修改、添加數(shù)據(jù)的總次數(shù)
self.db.request_count  # 調(diào)用當前頁面請求數(shù)據(jù)庫的次數(shù)
    5. page:查詢的當前頁碼
self.db.page  # 調(diào)用當前頁碼

適應版本

v1.0.1