pymysql操作mysql數據庫

一、pymysql操作mysql數據庫

  • 安裝pymysql

    pip install pymysql

1.1 pymysql操作數據庫的五行拳

  1. 連接數據庫

    使用Connect方法連接數據庫

    pymysql.Connections.Connection(host=None, user=None, password='', database=None, port=0,  charset='')
    參數說明:host – 數據庫服務器所在的主機。user – 登錄用戶名。password – 登錄用戶密碼。database – 連接的數據庫。port – 數據庫開放的端口。(默認: 3306)charset – 連接字符集。
    返回值:返回連接對象例子:
    link = pymysql.Connect(host='localhost', port=3306, user='root', password='123456', db='zzl', charset='utf8')
    ?
    • 連接對象方法

    方法說明
    begin()開啟事務
    commit()提交事務
    cursor(cursor=None)創建一個游標用來執行sql語句
    rollback()回滾事務
    close()關閉連接
    select_db(db)選擇數據庫
    set_charset(charset)設置字符集
  2. 創建游標

    cursor = link.cursor() ?
    cursor=pymysql.Cursors.DictCursor()  #[{}]
    print(cursor.rowcount) #打印受影響行數
    方法說明
    close()關閉游標
    execute(query, args=None)執行單條語句,傳入需要執行的語句,是string類型;同時可以給查詢傳入參數,參數可以是tuple、list或dict。執行完成后,會返回執行語句的影響行數。
    fetchone()取一條數據
    fetchmany(n)取多條數據
    fetchall()取所有數據
    _executed屬性正在執行的sql語句
  3. 執行sql語句

    # 執行sql語句
    sql = 'select * from user1'
    # 執行完sql語句,返回受影響的行數
    num = cursor.execute(sql)
  4. 獲取結果集

    result1 = cursor.fetchone()
    print(result1)
  5. 關閉連接

    cursor.close()
    link.close()

1.2 pymysql中事務處理

pymysql默認是沒有開啟自動提交事務,所以我們如果進行增、刪、改,就必須手動提交或回滾事務。

sql = 'delete from user where id=%s' % user_id
?
# 如果要執行增刪改語句的時候,下面的就是固定格式
try:cursor.execute(sql)# 如果全部執行成功,提交事務link.commit()print(cursor.lastrowid) #獲取最后插入記錄的自增id號
except Exception as e:print(e)link.rollback()
?

1.3 防sql注入

  • pymysql.escape_string(str) 轉移字符串中特殊字符(‘,“等)

  • cursor.execute(sql,參數),參數化,不要直接拼接sql字符串

二、封裝數據庫操作類

2.1.數據庫操作類的封裝

  • 一個數據庫model類對應一個表

  • 數據庫model類的核心是連貫操作和方法的無順序調用

    db.where('username="admin"').table('blog_user').field('username,password').select()
    # select usenrame,password from blog_user where username='admin'
    # sql = "SELECT {fields} FROM {table} {where} {groupby} {having} {orderby} {limit}".format()

2.2 連貫操作

方法要返回self

2.3 方法的無順序調用

  • 在進行數據庫查詢時,不用考慮方法的先后順序。

  • 核心思想

    • 無論怎么調用,最終生成sql語句。

    • 每調用一個方法,就生成對應sql子句

    • 涉及到的技術點:字符串拼接

    • 每次調用的最后必定是select、insert、update、delete,這些方法不返回self

2.4 字段緩存

  • 在查詢語句中盡量不要出現*,我們可以將表的字段緩存的文件中,實例化數據庫model類時,加載緩存字段,如果不指定字段就使用緩存字段

  • 也可以通過緩存字段過濾增刪改時無效的字段

三、分頁類

分頁是通過解析url中page參數(可以自己指定),結合sql語句中limit子句,從數據庫中查詢每個頁面所需數據,具體可以分為以下步驟:

  • 1) 獲取總記錄數

  • 2)獲取每頁顯示的記錄個數

  • 3)計算總頁數:總記錄數/每頁記錄個數,然后上取整

  • 4)解析url獲取當前頁數

  • 5)計算limit子句所需的偏移量: limit (當前頁數-1)*每頁記錄個數,每頁記錄個數

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456479.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456479.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456479.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SecureCRT常用的使用技巧

文章目錄前言:1、SecureCRT 超時自動斷開連接的解決辦法2、SecureCRT連接Linux時,終端顯示亂碼的問題。3、SecureCRT使用自動記錄日志功能4、使用SecureCRT從Windows上傳文件到Linux5、SecureCRT配色推薦和永久設置前言: 由于工作需要&#…

解決:(1062, Duplicate entry '2019-08-30' for key 'rdate')

解決(1062, "Duplicate entry 2019-08-30 for key rdate") 顯然這個問題是因為插入重復主鍵導致從庫不工作了,更改庫的唯一限制: unique 為normal 或者刪除unique ALTER TABLE 表明 DROP INDEX 字節名; 實例 CREATE TABLE good_booked (au…

人民幣數字金額轉大寫金額

public class t {public static String Trans2RMB(String money) {int index money.indexOf(".");if (index < 0) {// 沒有角分money money ".00";index money.indexOf(".");}if (money.substring(index, money.length()).length() < …

eventBus 與fragment

同一個eventbut是不可以注冊兩次的&#xff0c;所以我們會在ondestroy方法中進行unregister&#xff08;&#xff09; 但是在fragment中&#xff0c;最好把unregister&#xff08;&#xff09;方法寫到 onDestroyView&#xff08;&#xff09;方法中而不是onDestrory&#xff0…

機器學習之線性代數總結

目錄1、SVD是什么、表達式是什么及對應的數學含義&#xff1b;2、了解方陣、行列式的含義&#xff08;方陣即矩陣&#xff0c;行列式即矩陣的計算結果&#xff09;3、了解代數余子式的概念4、伴隨矩陣的概念5、知道方陣的逆的公式、范德蒙行列式6、知道矩陣的乘法&#xff0c;掌…

Python操作MongoDB

一 安裝 pymongo pip install pymongo3.4 ? 導入 MongoClient from pymongo import MongoClient 二 連接MongoDB數據庫 MongoDB端口號:27017 連接MongoDB我們需要使用PyMongo庫里面的MongoClient&#xff0c;一般來說傳入MongoDB的IP及端口即可&#xff0c;第一個參數為地…

各種插件

上下滾動抽獎效果, 移動端省級聯動, 時間聯動 , pc端省級聯動 vue 支持各種方式上傳 一個不太完善的拖拽排序 react 拖拽交換插件 各種小插件 壓縮圖片移動端 h5上傳 h5分片上傳 包括服務器 slideSuper 各種滑動效果 wow.js 轉載于:https://www.cnblogs.com/dhsz/p/6377956.h…

MailBee.NET Objects發送電子郵件(SMTP)教程六:創建并發送帶有附件的郵件

2019獨角獸企業重金招聘Python工程師標準>>> MailBee.NET Objects是一款為創建、發送、接收以及處理電子郵件而設計的健壯、功能豐富的.NET控件。幾行代碼便可為應用程序添加E-Mail支持&#xff0c;簡單高效。具備“必需”以及獨特的功能&#xff0c;這些控件幫助開…

機器學習之凸優化原理推導及相關知識總結

文章目錄目錄1、了解凸集和仿射集的基本概念。2、知道幾何體的向量表達。3、了解超平面和半空間的概念。4、了解分割超平面和支撐超平面的含義。5、知道jensen不等式。6、掌握知識&#xff1a;凸函數。7、掌握凸優化目錄 1、了解凸集和仿射集的基本概念。 凸集&#xff1a;在…

jQuery BreakingNews 間歇滾動

BreakingNews 是一款基于jQuery的間歇滾動插件。它可以設置標題、標題顏色、標題背景顏色、鏈接顏色、字體大小、邊框、寬度、自動滾動、間歇時間等等&#xff0c;同時它還好提供兩種過度方式——淡入淡出&#xff08;fade&#xff09;和向上滑動&#xff08;slide&#xff09;…

機器學習之回歸總結

目錄1、了解線性回歸2、了解似然函數3、了解交叉驗證的原理4、梯度下降算法4.1、批量梯度下降算法&#xff08;Batch Gradient Descent&#xff0c;簡稱BGD&#xff09;&#xff1a;4.2、隨機梯度下降算法&#xff08;SGD&#xff09;&#xff1a;4.3、折中&#xff1a; 5、了解…

html中的url、href、src的區別

url不是屬性&#xff0c;src和href是屬性&#xff0c;src用于替換當前元素&#xff0c;href用于在當前文檔和引用資源之間確立聯系&#xff0c;也就是說src引用的路徑是img自己的路徑&#xff0c;href引用的路徑是要跳轉到的地方。 URL&#xff1a;Uniform Resource Locators&…

SSIS 包部署錯誤 0xC0010014

SSIS 包部署錯誤 0xC0010014 Reinhard 在部署 SSIS 包時&#xff0c;提示如下錯誤。 由于錯誤 0xC0010014“發生了一個或多個錯誤。在此消息之前應有更為具體的錯誤消息&#xff0c;對這些錯誤進行詳細說明。此消息用作遇到錯誤的函數的返回值。”&#xff0c;無法加載包。當 C…

Android性能優化-App后臺優化

原文鏈接 Background Optimizations 前言 后臺進程是內存和電池敏感的。一個隱式的broadcast可能會啟動很多監聽它的后臺進程&#xff0c;即使這些進程可能做得工作不多。這可能丟設備性能和用戶體驗都有比較大的影響。 為了緩解這種問題&#xff0c;7.0&#xff08;API 24&…

機器學習之決策樹與隨機森林

目錄1、了解熵、條件熵、互信息的概念及公式1.1、熵1.2、條件熵1.3、信息增益/互信息 2、了解決策樹2.1、了解決策樹的概念和特點以及和熵的關系2.2、了解樹生成的過程2.3、了解決策樹三種算法的區別2.4、了解決策樹的損失函數2.5、了解解決決策樹過擬合的方法2.6、了解后剪枝的…

JSON(JavaScript Object Notation) 格式

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。 它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析和生成。JSON采用完全獨立于程序語言的文本格式&#xff0c;但是也使用了類C語言的習慣。 json是 JavaScript Object Notation 的首字母縮寫&…

synchronized 的理解

第一種&#xff1a;package com.ucmed.zsyy.util;/*** Created by ucmed on 2017/2/8.*/public class DirtyRead {private String username "zjkj";private String password "123";public synchronized void setValue(String username, String password)…

機器學習之提升算法

1、知道提升、梯度提升是什么意思1.1、提升1.2、梯度提升1.3、了解提升算法的過程 2、殘差與殘差平方和&#xff08;residual sum of squares&#xff09;3、了解GBDT算法4、了解XGBoost算法5、了解Adaboost算法5.1、Adaboost算法的原理5.2、例子 6、偏差和方差 1、知道提升、梯…

Jsoup遍歷ul li下的鏈接信息實例

2019獨角獸企業重金招聘Python工程師標準>>> Document doc;try {String URL "www.baidu.com";doc Jsoup.connect(URL).get();Elements ElementsUl doc.getElementsByTag("ul");for (Element elementLi : ElementsUl) {Elements provinceEl …

兩篇波蘭地區重金屬污染地區土壤微生物多樣性的研究

環境微生物&#xff08;包括方興未艾的腸道微生物&#xff09;在不同的系統中發揮著的生態作用逐漸被意識到&#xff0c;我們對環境微生物實際上仍舊知之甚少&#xff0c;其多樣性問題仍舊是一個非常基礎和重要的課題。這次讀的兩篇文章都是關于波蘭地區重金屬污染地區的土壤微…