欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python db類(lèi)用法說(shuō)明

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

我就廢話(huà)不多說(shuō)了,大家還是直接看代碼吧~

import pymysql
 
class DB:
 __host = 'localhost' # 服務(wù)器地址
 __username = 'root' # 用戶(hù)名
 __password = '' # 密碼
 __database = 'test' # 數(shù)據(jù)庫(kù)
 __field = '*' # 查詢(xún)字段
 __where = '' # 條件
 __sql = False # 是否返回sql
 __join = '' # 聯(lián)表
 __order = '' # 排序
 __limit = '' # 數(shù)量
 
 # 構(gòu)造函數(shù),在生成對(duì)象時(shí)調(diào)用
 def __init__(self, table):
  try:
   # 打開(kāi)數(shù)據(jù)庫(kù)連接 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ù)庫(kù)連接
   self.db.close()
  except Exception as e:
   print(e)
 
 # 得到當(dāng)前sql語(yǔ)句
 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語(yǔ)句
   ret = self.cursor.execute(sql)
   # 提交到數(shù)據(jù)庫(kù)執(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語(yǔ)句
    ret = self.cursor.execute(sql)
    # 提交到數(shù)據(jù)庫(kù)執(zhí)行
    self.db.commit()
    return ret
   except Exception as e:
    # 如果發(fā)生錯(cuò)誤則回滾
    self.db.rollback()
    print(e)
    return 0
 
  else:
   raise BaseException('沒(méi)有條件') # 拋異常
 
 # 修改
 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語(yǔ)句
   ret = self.cursor.execute(sql)
   # 提交到數(shù)據(jù)庫(kù)執(zhí)行
   self.db.commit()
   return ret
  except Exception as e:
   # 如果發(fā)生錯(cuò)誤則回滾
   self.db.rollback()
   print(e)
   return 0
 
 # 查詢(xún)
 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 查詢(xún)
  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', '錢(qián)二', '女', '學(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)
 
# 查詢(xún) 優(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í)行了查詢(xún)的 sql 代碼。那么讀取 cursor.description 屬性的時(shí)候,將返回一個(gè)列表,這個(gè)列表中裝的是元組,元組中裝的分別

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

2. rowcount

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

3. close

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

4. execute(sql[,parameters])

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

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

5. fetchone

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

6. fetchmany(size)

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

7. fetchall

獲取所有滿(mǎn)足 sql 語(yǔ)句的數(shù)據(jù)。

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

相關(guān)文章

  • python抽象基類(lèi)用法實(shí)例分析

    python抽象基類(lèi)用法實(shí)例分析

    這篇文章主要介紹了python抽象基類(lèi)用法,實(shí)例分析了Python抽象基類(lèi)的使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2015-06-06
  • 基于python和pygame庫(kù)實(shí)現(xiàn)刮刮樂(lè)游戲

    基于python和pygame庫(kù)實(shí)現(xiàn)刮刮樂(lè)游戲

    這篇文章主要介紹了如何基于python和pygame庫(kù)實(shí)現(xiàn)刮刮樂(lè)游戲,文中通過(guò)代碼示例和圖文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • 深入探討Python中的內(nèi)置類(lèi)屬性`__repr__`

    深入探討Python中的內(nèi)置類(lèi)屬性`__repr__`

    在Python中,__repr__是一個(gè)特殊的內(nèi)置類(lèi)屬性,用于定義類(lèi)的字符串表示形式,本文將深入探討__repr__的作用、用法以及一些實(shí)際應(yīng)用場(chǎng)景,希望對(duì)大家有所幫助
    2023-12-12
  • 詳談Python 窗體(tkinter)表格數(shù)據(jù)(Treeview)

    詳談Python 窗體(tkinter)表格數(shù)據(jù)(Treeview)

    今天小編就為大家分享一篇詳談Python 窗體(tkinter)表格數(shù)據(jù)(Treeview),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 詳解Python中的argparse模塊

    詳解Python中的argparse模塊

    這篇文章主要介紹了詳解Python中的argparse模塊,argparse可以讓你輕松地編寫(xiě)用戶(hù)友好的命令行界面,定義你的程序需要的參數(shù),自動(dòng)生成幫助和用法信息,需要的朋友可以參考下
    2023-07-07
  • Python多線(xiàn)程編程threading模塊使用最佳實(shí)踐及常見(jiàn)問(wèn)題解析

    Python多線(xiàn)程編程threading模塊使用最佳實(shí)踐及常見(jiàn)問(wèn)題解析

    這篇文章主要為大家介紹了Python多線(xiàn)程編程threading模塊使用最佳實(shí)踐及常見(jiàn)問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 新年快樂(lè)! python實(shí)現(xiàn)絢爛的煙花綻放效果

    新年快樂(lè)! python實(shí)現(xiàn)絢爛的煙花綻放效果

    這篇文章主要為大家詳細(xì)介紹了python利用可視化技巧實(shí)現(xiàn)煙花綻放效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • numpy存取數(shù)據(jù)(tofile/fromfile)的實(shí)現(xiàn)

    numpy存取數(shù)據(jù)(tofile/fromfile)的實(shí)現(xiàn)

    本文主要介紹了numpy存取數(shù)據(jù)(tofile/fromfile)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python實(shí)現(xiàn)的建造者模式示例

    Python實(shí)現(xiàn)的建造者模式示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的建造者模式,結(jié)合完整實(shí)例形式分析了構(gòu)造者模式的具體定義與相關(guān)使用操作技巧,需要的朋友可以參考下
    2018-08-08
  • Python導(dǎo)入父文件夾中模塊并讀取當(dāng)前文件夾內(nèi)的資源

    Python導(dǎo)入父文件夾中模塊并讀取當(dāng)前文件夾內(nèi)的資源

    這篇文章主要給大家介紹了關(guān)于Python導(dǎo)入父文件夾中模塊并讀取當(dāng)前文件夾內(nèi)資源的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評(píng)論