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

python db類用法說明

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

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

import pymysql
 
class DB:
 __host = 'localhost' # 服務器地址
 __username = 'root' # 用戶名
 __password = '' # 密碼
 __database = 'test' # 數據庫
 __field = '*' # 查詢字段
 __where = '' # 條件
 __sql = False # 是否返回sql
 __join = '' # 聯(lián)表
 __order = '' # 排序
 __limit = '' # 數量
 
 # 構造函數,在生成對象時調用
 def __init__(self, table):
  try:
   # 打開數據庫連接 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)建一個游標對象 cursor
  self.cursor = self.db.cursor()
  self.table = table
 
 # 析構函數,釋放對象時使用
 def __del__(self):
  try:
   # 關閉數據庫連接
   self.db.close()
  except Exception as e:
   print(e)
 
 # 得到當前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
 
 # 數量
 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)
   # 提交到數據庫執(zhí)行
   self.db.commit()
   return ret
  except Exception as e:
   # 如果發(fā)生錯誤則回滾
   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)
    # 提交到數據庫執(zhí)行
    self.db.commit()
    return ret
   except Exception as e:
    # 如果發(fā)生錯誤則回滾
    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)
   # 提交到數據庫執(zhí)行
   self.db.commit()
   return ret
  except Exception as e:
   # 如果發(fā)生錯誤則回滾
   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() 方法獲取所有數據.
  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', '趙一', '男', '學生', '8', '120', '35');
INSERT INTO `people` VALUES ('2', '錢二', '女', '學生', '9', '111', '31');
INSERT INTO `people` VALUES ('3', '孫三', '男', '學生', '10', '123', '34');
INSERT INTO `people` VALUES ('4', '李四', '女', '學生', '11', '100', '30');
'''
db = DB('people')
 
# 增加
dict = {'name': '周五', 'sex': '男', 'job': '學生', '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)

補充知識:python DB API cursor 常用接口

1. description

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

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

2. rowcount

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

3. close

關閉游標。關閉游標以后就再也不能使用了,否則會拋出異常。

4. execute(sql[,parameters])

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

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

5. fetchone

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

6. fetchmany(size)

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

7. fetchall

獲取所有滿足 sql 語句的數據。

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

相關文章

  • Python 正則表達式操作指南

    Python 正則表達式操作指南

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

    Python使用Tabulate庫實現格式化表格數據

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

    在Pandas中進行數據重命名的方法示例

    Pandas作為Python中最流行的數據處理庫,提供了強大的數據操作功能,其中數據重命名是常見且基礎的操作之一,本文將通過簡潔明了的講解和豐富的代碼示例,帶你快速掌握如何在Pandas中進行數據重命名,需要的朋友可以參考下
    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)用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python定時任務工具之APScheduler使用方式

    Python定時任務工具之APScheduler使用方式

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

    Pytest測試報告工具Allure的高級用法

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

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

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

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

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

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

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

最新評論

油尖旺区| 阿巴嘎旗| 关岭| 响水县| 宁陵县| 垦利县| 泰来县| 葵青区| 茂名市| 桦川县| 静宁县| 恩施市| 大名县| 徐水县| 新巴尔虎左旗| 临洮县| 阳高县| 洪湖市| 永吉县| 宁阳县| 牙克石市| 衡水市| 朝阳市| 澎湖县| 大英县| 安丘市| 格尔木市| 耿马| 海伦市| 民丰县| 友谊县| 永平县| 大余县| 泸水县| 海兴县| 武城县| 犍为县| 巴楚县| 汾西县| 武穴市| 四会市|