最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python db類用法說明

 更新時(shí)間:2020年07月07日 08:48:15   作者:drzdryse  
這篇文章主要介紹了python db類用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

import pymysql
 
class DB:
 __host = 'localhost' # 服務(wù)器地址
 __username = 'root' # 用戶名
 __password = '' # 密碼
 __database = 'test' # 數(shù)據(jù)庫
 __field = '*' # 查詢字段
 __where = '' # 條件
 __sql = False # 是否返回sql
 __join = '' # 聯(lián)表
 __order = '' # 排序
 __limit = '' # 數(shù)量
 
 # 構(gòu)造函數(shù),在生成對(duì)象時(shí)調(diào)用
 def __init__(self, table):
  try:
   # 打開數(shù)據(jù)庫連接 host, username, password, database
   self.db = pymysql.connect(self.__host, self.__username, self.__password, self.__database)
  except Exception as e:
   print(e)
   exit()
 
  # 使用 cursor() 方法創(chuàng)建一個(gè)游標(biāo)對(duì)象 cursor
  self.cursor = self.db.cursor()
  self.table = table
 
 # 析構(gòu)函數(shù),釋放對(duì)象時(shí)使用
 def __del__(self):
  try:
   # 關(guān)閉數(shù)據(jù)庫連接
   self.db.close()
  except Exception as e:
   print(e)
 
 # 得到當(dāng)前sql語句
 def getSql(self):
  self.__sql = True
  return self
 
 # 字段
 def field(self, str):
  self.__field = str
  return self
 
 # 聯(lián)表
 def join(self, table, where):
  self.__join = ' LEFT JOIN ' + table + ' ON ' + where + ' '
  return self
 
 # 條件
 def where(self, param):
  self.__where = ' WHERE '
  if isinstance(param, list):
   for i in param:
    if isinstance(i[2], list):
     tmp = '('
     for j in i[2]:
      tmp += str(j) + ','
     tmp += ')'
     self.__where += '`' + i[0] + '` ' + i[1] + ' ' + tmp + ' AND '
    else:
     self.__where += '`' + i[0] + '` ' + i[1] + ' ' + str(i[2]) + ' AND '
   else:
    self.__where = self.__where[0:-4]
  else:
   self.__where += param
 
  return self
 
 # 排序
 def order(self, str):
  self.__order = ' ORDER BY ' + str
  return self
 
 # 數(shù)量
 def limit(self, str):
  self.__limit = ' LIMIT ' + str
  return self
 
 # 增加
 def insert(self, dict):
  key = value = ''
  for k, v in dict.items():
   key += '`' + k + '`,'
   value += '"' + v + '",'
 
  key = key[0:-1]
  value = value[0:-1]
 
  sql = 'INSERT INTO ' + self.table + ' (' + key + ') VALUES (' + value + ')'
  if self.__sql:
   return sql
 
  try:
   # 執(zhí)行sql語句
   ret = self.cursor.execute(sql)
   # 提交到數(shù)據(jù)庫執(zhí)行
   self.db.commit()
   return ret
  except Exception as e:
   # 如果發(fā)生錯(cuò)誤則回滾
   self.db.rollback()
   print(e)
   return 0
 
 # 刪除
 def delete(self):
  if self.__where:
   sql = "DELETE FROM " + self.table + self.__where
   if self.__sql:
    return sql
 
   try:
    # 執(zhí)行sql語句
    ret = self.cursor.execute(sql)
    # 提交到數(shù)據(jù)庫執(zhí)行
    self.db.commit()
    return ret
   except Exception as e:
    # 如果發(fā)生錯(cuò)誤則回滾
    self.db.rollback()
    print(e)
    return 0
 
  else:
   raise BaseException('沒有條件') # 拋異常
 
 # 修改
 def update(self, dict):
  str = ''
  for k, v in dict.items():
   str += '`' + k + '`="' + v + '",'
 
  str = str[0:-1]
  sql = 'UPDATE ' + self.table + ' SET ' + str
 
  if self.__where:
   sql += self.__where
  if self.__sql:
   return sql
 
  try:
   # 執(zhí)行sql語句
   ret = self.cursor.execute(sql)
   # 提交到數(shù)據(jù)庫執(zhí)行
   self.db.commit()
   return ret
  except Exception as e:
   # 如果發(fā)生錯(cuò)誤則回滾
   self.db.rollback()
   print(e)
   return 0
 
 # 查詢
 def select(self):
  sql = "SELECT " + self.__field + " FROM " + self.table
 
  if self.__join:
   sql += self.__join
 
  if self.__where:
   sql += self.__where
 
  if self.__order:
   sql += self.__order
 
  if self.__limit:
   sql += self.__limit
 
  if self.__sql:
   return sql
 
  # 使用 execute() 方法執(zhí)行 SQL 查詢
  self.cursor.execute(sql)
 
  # 使用 fetchall() 方法獲取所有數(shù)據(jù).
  data = self.cursor.fetchall()
  return data
'''
DROP TABLE IF EXISTS `people`;
CREATE TABLE `people` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '名字',
 `sex` varchar(7) DEFAULT '' COMMENT '性別',
 `job` varchar(6) DEFAULT '' COMMENT '工作',
 `age` varchar(6) DEFAULT '' COMMENT '年齡',
 `height` varchar(6) DEFAULT '' COMMENT '身高',
 `weight` varchar(6) DEFAULT '' COMMENT '體重',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO `people` VALUES ('1', '趙一', '男', '學(xué)生', '8', '120', '35');
INSERT INTO `people` VALUES ('2', '錢二', '女', '學(xué)生', '9', '111', '31');
INSERT INTO `people` VALUES ('3', '孫三', '男', '學(xué)生', '10', '123', '34');
INSERT INTO `people` VALUES ('4', '李四', '女', '學(xué)生', '11', '100', '30');
'''
db = DB('people')
 
# 增加
dict = {'name': '周五', 'sex': '男', 'job': '學(xué)生', 'age': '8', 'height': '121', 'weight': '32'}
data = db.insert(dict)
print(data)
 
# 刪除
# data = db.where('id=6').delete()
# print(data)
 
# 修改
# dict = {'age': '9', 'height': '121', 'weight': '31'}
# data = db.where('id=7').update(dict)
# print(data)
 
# 查詢 優(yōu)化where條件 'id<11'
# data = db.field('id,name,age,job').where([['id', '>', 1]]).order('id desc').limit('3').select()
# print(data)

補(bǔ)充知識(shí):python DB API cursor 常用接口

1. description

如果 cursor 執(zhí)行了查詢的 sql 代碼。那么讀取 cursor.description 屬性的時(shí)候,將返回一個(gè)列表,這個(gè)列表中裝的是元組,元組中裝的分別

是 (name,type_code,display_size,internal_size,precision,scale,null_ok) ,其中 name 代表的是查找出來的數(shù)據(jù)的字段名稱,其他參數(shù)暫時(shí)用處不大。

2. rowcount

代表的是在執(zhí)行了 sql 語句后受影響的行數(shù)。

3. close

關(guān)閉游標(biāo)。關(guān)閉游標(biāo)以后就再也不能使用了,否則會(huì)拋出異常。

4. execute(sql[,parameters])

執(zhí)行某個(gè) sql 語句。如果在執(zhí)行 sql 語句的時(shí)候還需要傳遞參數(shù),那么可以傳給 parameters 參數(shù)。示例代碼如下:

cursor.execute("select * from article where id=%s",(1,))

5. fetchone

在執(zhí)行了查詢操作以后,獲取第一條數(shù)據(jù)。

6. fetchmany(size)

在執(zhí)行查詢操作以后,獲取多條數(shù)據(jù)。具體是多少條要看傳的 size 參數(shù)。如果不傳 size 參數(shù),那么默認(rèn)是獲取第一條數(shù)據(jù)。

7. fetchall

獲取所有滿足 sql 語句的數(shù)據(jù)。

以上這篇python db類用法說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python 正則表達(dá)式操作指南

    Python 正則表達(dá)式操作指南

    本文是通過Python的 re 模塊來使用正則表達(dá)式的一個(gè)入門教程,和庫參考手冊的對(duì)應(yīng)章節(jié)相比,更為淺顯易懂、循序漸進(jìn)。
    2009-05-05
  • Python使用Tabulate庫實(shí)現(xiàn)格式化表格數(shù)據(jù)

    Python使用Tabulate庫實(shí)現(xiàn)格式化表格數(shù)據(jù)

    在數(shù)據(jù)分析和軟件開發(fā)中,表格數(shù)據(jù)的展示是一個(gè)常見的需求,無論是簡單的數(shù)據(jù)報(bào)告,還是復(fù)雜的數(shù)據(jù)可視化,表格都是一種直觀且有效的信息展示方式,tabulate庫是一個(gè)非常實(shí)用的工具,它可以幫助我們輕松地將數(shù)據(jù)格式化為各種表格形式,本文將詳細(xì)介紹tabulate庫的使用方法
    2025-02-02
  • 在Pandas中進(jìn)行數(shù)據(jù)重命名的方法示例

    在Pandas中進(jìn)行數(shù)據(jù)重命名的方法示例

    Pandas作為Python中最流行的數(shù)據(jù)處理庫,提供了強(qiáng)大的數(shù)據(jù)操作功能,其中數(shù)據(jù)重命名是常見且基礎(chǔ)的操作之一,本文將通過簡潔明了的講解和豐富的代碼示例,帶你快速掌握如何在Pandas中進(jìn)行數(shù)據(jù)重命名,需要的朋友可以參考下
    2025-01-01
  • KMP算法精解及其Python版的代碼示例

    KMP算法精解及其Python版的代碼示例

    KMP算法基本上被人們用作字符串的匹配操作,這里我們就來介紹KMP算法精解及其Python版的代碼示例,需要的朋友可以參考下
    2016-06-06
  • python之while循環(huán)、無限循環(huán)用法及說明

    python之while循環(huán)、無限循環(huán)用法及說明

    這篇文章主要介紹了python之while循環(huán)、無限循環(huán)用法及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python定時(shí)任務(wù)工具之APScheduler使用方式

    Python定時(shí)任務(wù)工具之APScheduler使用方式

    APScheduler (advanceded python scheduler)是一款Python開發(fā)的定時(shí)任務(wù)工具。這篇文章主要介紹了Python定時(shí)任務(wù)工具--APScheduler的使用方式,需要的朋友可以參考下
    2019-07-07
  • Pytest測試報(bào)告工具Allure的高級(jí)用法

    Pytest測試報(bào)告工具Allure的高級(jí)用法

    這篇文章介紹了Pytest測試報(bào)告工具Allure的高級(jí)用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 深入淺析pycharm中 Make available to all projects的含義

    深入淺析pycharm中 Make available to all projects的含義

    這篇文章主要介紹了pycharm中 Make available to all projects的含義,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python下載指定頁面上圖片的方法

    Python下載指定頁面上圖片的方法

    這篇文章主要介紹了Python下載指定頁面上圖片的方法,涉及Python的正則匹配、URL及文件操作相關(guān)技巧,需要的朋友可以參考下
    2016-05-05
  • Python使用Selenium獲取Web頁面信息的流程步驟

    Python使用Selenium獲取Web頁面信息的流程步驟

    在 Web 自動(dòng)化測試和數(shù)據(jù)抓取中,獲取頁面信息是一個(gè)基本且重要的操作,通過 Selenium,您可以輕松地獲取頁面的各種信息,這些信息不僅可以用于驗(yàn)證測試結(jié)果,還可以用于數(shù)據(jù)分析和處理,所以本文給大家介紹了Python使用Selenium獲取Web頁面信息的流程步驟
    2025-03-03

最新評(píng)論

科尔| 五华县| 洪雅县| 波密县| 临洮县| 林州市| 曲沃县| 普宁市| 工布江达县| 临安市| 乌兰浩特市| 全椒县| 内黄县| 临清市| 莱西市| 射阳县| 高碑店市| 普宁市| 湖口县| 博兴县| 碌曲县| 昌黎县| 莫力| 包头市| 吉木乃县| 五原县| 龙陵县| 景德镇市| 长兴县| 华阴市| 镇巴县| 台中县| 文昌市| 宁陕县| 新竹县| 尚志市| 洪雅县| 浑源县| 包头市| 石景山区| 建平县|