日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

pymysql操作mysql数据库

發布時間:2023/12/20 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pymysql操作mysql数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、pymysql操作mysql數據庫

  • 安裝pymysql

    pip install pymysql

1.1 pymysql操作數據庫的五行拳

  • 連接數據庫

    使用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)設置字符集
  • 創建游標

    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語句
  • 執行sql語句

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

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

    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)*每頁記錄個數,每頁記錄個數

    總結

    以上是生活随笔為你收集整理的pymysql操作mysql数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。