国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python 操作Mysql(PyMysql)

這篇具有很好參考價(jià)值的文章主要介紹了Python 操作Mysql(PyMysql)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Python 操作 Mysql 常用方式:

  • PyMysql:純 Python 語言編寫的 Mysql 操作客戶端,安裝方便,支持 Python3。
  • SQLAlchemy:是一個(gè)非常強(qiáng)大的 ORM 框架,不提供底層的數(shù)據(jù)庫操作,主要是通過定義模型對應(yīng)數(shù)據(jù)表結(jié)構(gòu),在 Python Web 編程領(lǐng)域應(yīng)用廣泛。

在實(shí)際項(xiàng)目中,如果僅僅是簡單的爬蟲或者自動(dòng)化,建議使用 PyMysql;否則建議使用 SQLAlchemy,它更強(qiáng)大方便。

下面使用 PyMySQL 連接 Mysql數(shù)據(jù)庫,并實(shí)現(xiàn)簡單的增刪改查。

一、PyMySQL操作

PyMySQL 是在 Python3.x 版本中用于連接 MySQL 服務(wù)器的一個(gè)庫。

1、PyMySQL 安裝

檢查是否安裝PyMySQL:

pip list

如果未安裝,使用 pip命令安裝 PyMySQL。

pip install PyMySQL #安裝最新版本

還需要安裝一下 cryptography包:

pip install cryptography

因?yàn)?python連接數(shù)據(jù)庫是的加密方式需要 cryptography包。如果你不安裝cryptography,python連接數(shù)據(jù)庫會報(bào)錯(cuò)“:RuntimeError: ‘cryptography’ package is required for sha256_password or caching_sha2_password auth methods。該錯(cuò)誤提示的意思是:sha256_password和caching_sha2_password兩種加密方式需要cryptography。

2、數(shù)據(jù)庫連接

連接 Mysql數(shù)據(jù)庫之前,我們創(chuàng)建一個(gè) py_db數(shù)據(jù)庫。

數(shù)據(jù)庫連接:使用 pymysql 中的 connect() 方法,傳入數(shù)據(jù)庫的 HOST 地址、端口號、用戶名、密碼、待操作數(shù)據(jù)庫的名稱,即可以獲取數(shù)據(jù)庫的連接對象。

import pymysql

# 獲取數(shù)據(jù)庫連接
dbConn = pymysql.connect(host='localhost',
                         port=3306,
                         user='root',
                         password='***',
                         database='py_db',
                         # charset='utf8',
                         cursorclass=pymysql.cursors.DictCursor)

# 使用 cursor() 方法創(chuàng)建一個(gè)游標(biāo)對象 cursor
cursor = dbConn.cursor()
print(cursor)  # <pymysql.cursors.DictCursor object at 0x000001D3B1768510>

# 釋放資源
cursor.close()
dbConn.close()

2.1 游標(biāo)

  • 獲取游標(biāo):通過連接對象使用 cursor()方法來獲取游標(biāo)對象
  • 釋放游標(biāo):通過連接對象使用 close()方法來釋放游標(biāo)對象。

我們可以通過游標(biāo)對象來操作增刪改查等。

注意:操作完畢之后,我們需要將游標(biāo)對象和數(shù)據(jù)庫連接對象資源釋放掉。

3、創(chuàng)建表

創(chuàng)建數(shù)據(jù)庫表:可以使用 execute()方法來為數(shù)據(jù)庫創(chuàng)建表。

注意:execute()方法可以執(zhí)行標(biāo)準(zhǔn)的SQL語句,比如:創(chuàng)建表,插入,修改,刪除等操作。

import pymysql

# 獲取數(shù)據(jù)庫連接
dbConn = pymysql.connect(host='localhost',
                         port=3306,
                         user='root',
                         password='123456',
                         database='py_db',
                         # charset='utf8',
                         cursorclass=pymysql.cursors.DictCursor)

# 使用 cursor() 方法創(chuàng)建一個(gè)游標(biāo)對象 cursor
cursor = dbConn.cursor()

create_table_sql = "CREATE TABLE `t_user` ( \
  `id` bigint NOT NULL AUTO_INCREMENT,\
  `user_name` varchar(145) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,\
  `pazzword` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,\
  `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,\
  `age` int DEFAULT NULL,\
  `birthday` date DEFAULT NULL,\
  PRIMARY KEY (`id`)\
) ENGINE=InnoDB"

# 使用 execute()  方法執(zhí)行 SQL
res = cursor.execute(create_table_sql)

print(res)  # 0

# 釋放資源
cursor.close()
dbConn.close()

4、插入操作

Python執(zhí)行SQL語句常用方法:

  • execute()方法:執(zhí)行 一條SQL語句。
  • executemany()方法:傳入插入的 SQL 語句及位置變量列表,可以實(shí)現(xiàn)一次插入多條數(shù)據(jù)。
  • commit()方法:提交事務(wù),將數(shù)據(jù)提交到數(shù)據(jù)庫中。
  • rowcount:這是一個(gè)只讀屬性,并返回執(zhí)行execute()方法后影響的行數(shù)。

4.1 插入一條記錄

# 使用 cursor() 方法創(chuàng)建一個(gè)游標(biāo)對象 cursor
cursor = dbConn.cursor()

insert_sql = "INSERT INTO `t_user`(`user_name`, `pazzword`, `sex`, `age`, `birthday`) VALUES ('趙云', '123456', '男', 20, now())"

try:
   # 執(zhí)行 SQL語句
   res = cursor.execute(insert_sql)
   print(res)  # 1

   # 提交事務(wù)
   dbConn.commit()
except:
   # 回滾
   dbConn.rollback()
   raise
finally:
    # 釋放資源
    cursor.close()
    dbConn.close()

4.2 使用變量傳遞參數(shù)

推薦使用變量向SQL語句中傳遞參數(shù),防止SQL注入。

import time
insert_sql = "INSERT INTO `t_user`(`user_name`, `pazzword`, `sex`, `age`, `birthday`) VALUES ('%s', '%s', '%s', %s,  '%s')" % \
       ('趙云2', '123456', '男', 18, time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

try:
   # 執(zhí)行 SQL語句
   res = cursor.execute(insert_sql)
   print(res)  # 1

   # 提交事務(wù)
   dbConn.commit()
except:
   # 回滾
   dbConn.rollback()
   raise
finally:
    # 釋放資源
    cursor.close()
    dbConn.close()

4.3 插入多條記錄

import time
insert_sql = "INSERT INTO `t_user`(`user_name`, `pazzword`, `sex`, `age`, `birthday`) VALUES (%s, %s, %s, %s, %s)"

insert_datas = [
    ("趙子龍1", "123456", "男", 18, time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())),
    ("趙子龍2", "123456", "男", 19, time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())),
    ("趙子龍3", "123456", "男", 20, time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))]

try:
   # 執(zhí)行 SQL語句
   # res = cursor.execute(insert_sql)
   res = cursor.executemany(insert_sql, insert_datas)
   print(res)  # 3

   # 提交事務(wù)
   dbConn.commit()
except:
   # 回滾
   dbConn.rollback()
   raise
finally:
    # 釋放資源
    cursor.close()
    dbConn.close()

注意:PyMysql 會將 SQL 語句中的所有字段的傳參值當(dāng)做字符串類型進(jìn)行處理。

5、更新操作

和插入操作類似,只需要變更 SQL 語句即可,推薦使用變量傳遞參數(shù)。

update_sql = 'UPDATE `t_user` SET `user_name` = %s, `pazzword` = %s, `sex` = %s, `age` = %s WHERE `id` = %s'
update_datas = ("安琪拉", "123456", "女", 18, 2)

try:
   # 執(zhí)行 SQL語句
   res = cursor.execute(update_sql, update_datas)
   print(res)  # 1
    
    # 提交事務(wù)
   dbConn.commit()
...

6、刪除操作

和插入操作類似,只需要變更 SQL 語句即可,推薦使用變量傳遞參數(shù)。

delete_sql = 'DELETE FROM `t_user` WHERE `id` = %s'
delete_datas = [(1),(2)]

try:
   # 執(zhí)行 SQL語句
   res = cursor.executemany(delete_sql, delete_datas)
   print(res)  # 2

   # 提交事務(wù)
   dbConn.commit()
...    

二、查詢操作

Python查詢數(shù)據(jù)庫常用方法:

  • fetchone() 方法:返回單條記錄的結(jié)果集,結(jié)果集是一個(gè)對象。
  • fetchall()方法:返回所有記錄的結(jié)果行,結(jié)果集是一個(gè)列表。
  • rowcount:這是一個(gè)只讀屬性,并返回執(zhí)行execute()方法后影響的行數(shù)。

1、查詢單條記錄

select_sql = "SELECT * FROM `t_user` WHERE id = %s "
select_datas = (5)
try:
    # 執(zhí)行 SQL語句
    cursor.execute(select_sql, select_datas)
    res = cursor.fetchone()
    print(res) # {'id': 5, 'user_name': '趙子龍1', 'pazzword': '123456', 'sex': '男', 'age': 18, 'birthday': datetime.date(2023, 2, 13)}
except:
   raise
finally:
    # 釋放資源
    cursor.close()
    dbConn.close()

2、查詢多條記錄

select_sql = "SELECT * FROM `t_user` WHERE id >= %s AND sex = %s"
select_datas = (5, "男")
try:
    # 執(zhí)行 SQL語句
    cursor.execute(select_sql, select_datas)
    res = cursor.fetchmany(5)
    for row in res:
        id = row['id']
        username = row['user_name']
        pazzword = row['pazzword']
        sex = row['sex']
        age = row['age']
        birthday = row['birthday']

        # 打印結(jié)果
        print(row)
        print("id=%s,username=%s,pazzword=%s,sex=%s,age=%s,birthday=%s" % \
              (id, username, pazzword, sex, age, birthday))
except:
   raise
finally:
    # 釋放資源
    cursor.close()
    dbConn.close()

pymysql執(zhí)行sql,Python,Python 操作Mysql,Python使用PyMysql

三、事務(wù)機(jī)制

1、事務(wù)機(jī)制

事務(wù)應(yīng)該具有4個(gè)屬性:原子性、一致性、隔離性、持久性。這四個(gè)屬性通常稱為ACID特性。

  • 原子性(atomicity)。一個(gè)事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。
  • 一致性(consistency)。事務(wù)必須是使數(shù)據(jù)庫從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。一致性與原子性是密切相關(guān)的。
  • 隔離性(isolation)。一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾。
  • 持久性(durability)。持續(xù)性也稱永久性(permanence),指一個(gè)事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來的其他操作或故障不應(yīng)該對其有任何影響。

2、事務(wù)操作

對于支持事務(wù)的數(shù)據(jù)庫, 在 Python數(shù)據(jù)庫編程中,當(dāng)游標(biāo)建立之時(shí),就自動(dòng)開始了一個(gè)隱形的數(shù)據(jù)庫事務(wù)。

  • commit()方法:執(zhí)行當(dāng)前游標(biāo)的所有操作。
  • rollback()方法:回滾當(dāng)前游標(biāo)的所有操作。

所以,上面的增刪改查操作應(yīng)該就好理解啦。

– 求知若饑,虛心若愚。文章來源地址http://www.zghlxwxcb.cn/news/detail-758364.html

到了這里,關(guān)于Python 操作Mysql(PyMysql)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python——數(shù)據(jù)庫操作PyMysql使用詳解

    勸君惜取少年時(shí) 在編寫小腳本時(shí),PyMysql是快速連接并操作數(shù)據(jù)庫的一個(gè)不錯(cuò)選擇。 連接數(shù)據(jù)庫 使用connect函數(shù)創(chuàng)建連接對象,此連接對象提供關(guān)閉數(shù)據(jù)庫、事務(wù)回滾等操作 一般傳參為:host, user, password, port(默認(rèn)為3306), database(想要連接的數(shù)據(jù)庫名) 連接對象的常見方法 :

    2024年02月02日
    瀏覽(21)
  • 【MySQL速通篇003】MySQL視圖,MySQL觸發(fā)器,MySQL函數(shù),MySQL存儲過程(參數(shù)分類,存儲過程的增刪改查等),SQL的動(dòng)態(tài)執(zhí)行,支持事務(wù)的存儲過程,pymysql

    【MySQL速通篇003】MySQL視圖,MySQL觸發(fā)器,MySQL函數(shù),MySQL存儲過程(參數(shù)分類,存儲過程的增刪改查等),SQL的動(dòng)態(tài)執(zhí)行,支持事務(wù)的存儲過程,pymysql

    這篇萬字博客主要包括了我對: MySQL視圖,MySQL觸發(fā)器,MySQL函數(shù),MySQL存儲過程(參數(shù)分類,存儲過程的增刪改查等),SQL的動(dòng)態(tài)執(zhí)行,支持事務(wù)的存儲過程,pymysql等的總結(jié),可謂非常的詳細(xì)?? 文章畢竟這么長,對于文章中的一些語法,概念,例子等錯(cuò)誤,歡迎并感謝各位讀

    2023年04月27日
    瀏覽(93)
  • 如何利用Python中的pymysql庫來操作Mysql數(shù)據(jù)庫,看這篇就夠啦~

    如何利用Python中的pymysql庫來操作Mysql數(shù)據(jù)庫,看這篇就夠啦~

    ?為了使python連接上數(shù)據(jù)庫,你需要一個(gè)驅(qū)動(dòng),這個(gè)驅(qū)動(dòng)是用于與數(shù)據(jù)庫交互的庫,本文是向大家介紹了如何利用python中的pymysql庫來操作mysql數(shù)據(jù)庫。 1、什么是pymysql? pymysql是從python連接到mysql數(shù)據(jù)庫服務(wù)器的接口, 簡單理解就是,pymysql是python操作mysql數(shù)據(jù)庫的三方模塊,可

    2024年02月06日
    瀏覽(27)
  • Python使用pymysql和sqlalchemy訪問MySQL的區(qū)別

    pymysql和sqlalchemy是兩個(gè)Python中經(jīng)常用于與MySQL數(shù)據(jù)庫交互的庫。都可以連接MySQL數(shù)據(jù)庫,但它們有明顯的區(qū)別。 (1)特點(diǎn) pymysql是一個(gè)Python模塊,它可以用作一個(gè)獨(dú)立的Python文件或作為Python程序中的一個(gè)模塊。安裝pymysql之后,需要導(dǎo)入它并連接到一個(gè)MySQL數(shù)據(jù)庫,以開始與之交

    2024年02月12日
    瀏覽(21)
  • 使用Python pymysql連接Mysql數(shù)據(jù)庫-菜鳥教程

    使用Python pymysql連接Mysql數(shù)據(jù)庫-菜鳥教程

    1、安裝pymysql模塊 pip install pymysql 2、啟動(dòng)Mysql數(shù)據(jù)庫服務(wù) net start mysql80 ?3、連接數(shù)據(jù)庫 運(yùn)行結(jié)果如下 ?4、創(chuàng)建數(shù)據(jù)庫表 執(zhí)行成功后,在本地登錄mysql數(shù)據(jù)庫進(jìn)行查看驗(yàn)證 ? 5、數(shù)據(jù)庫插入操作 ?執(zhí)行程序后在本地查看驗(yàn)證 ?6、數(shù)據(jù)庫查詢操作 Python查詢Mysql使用 fetchone() 方法

    2024年02月04日
    瀏覽(20)
  • Python數(shù)據(jù)庫操作 ---- pymysql教學(xué)

    Python數(shù)據(jù)庫操作 ---- pymysql教學(xué)

    安裝mysql 在使用pymysql的前提就是又一個(gè)mysql數(shù)據(jù)庫,這個(gè)數(shù)據(jù)庫可以是本地?cái)?shù)據(jù)庫也可以是遠(yuǎn)程的數(shù)據(jù)庫, mysql的安裝這里就不再贅述了,大家可以參考其他的模塊進(jìn)行安裝 安裝pymysql 解釋: 在連接數(shù)據(jù)的時(shí)候需要指定相應(yīng)的參數(shù) host 數(shù)據(jù)庫ip地址,如果是本地可以用localhos

    2024年02月03日
    瀏覽(25)
  • Django模板,Django中間件,ORM操作(pymysql + SQL語句),連接池,session和cookie, 緩存

    Django模板,Django中間件,ORM操作(pymysql + SQL語句),連接池,session和cookie, 緩存

    今日概要: 模板 中間件 ORM操作(pymysql + SQL語句) session和cookie 緩存(很多種方式) 請求周期 路由系統(tǒng) 最基本路由關(guān)系 動(dòng)態(tài)路由(含正則) 路由分發(fā)不同的app中 + include + 本質(zhì) + name + namespace 視圖 類和函數(shù)(FBV和CBV) 參數(shù) request 請求數(shù)據(jù) 自定義數(shù)據(jù) 響應(yīng) 其他知識 虛擬環(huán)

    2024年02月04日
    瀏覽(26)
  • 【Python筆記】Python + xlrd + pymysql讀取excel文件數(shù)據(jù)并且將數(shù)據(jù)插入到MySQL數(shù)據(jù)庫里面

    【Python筆記】Python + xlrd + pymysql讀取excel文件數(shù)據(jù)并且將數(shù)據(jù)插入到MySQL數(shù)據(jù)庫里面

    這篇文章,主要介紹Python + xlrd + pymysql讀取excel文件數(shù)據(jù)并且將數(shù)據(jù)插入到MySQL數(shù)據(jù)庫里面。 目錄 一、Python讀取excel 1.1、安裝xlrd庫 1.2、打開excel工作簿 1.3、獲取sheet工作表 1.4、操作row數(shù)據(jù)行 1.5、操作column數(shù)據(jù)列 1.6、操作單元格 二、讀取excel數(shù)據(jù)保存到MySQL 2.1、完整代碼 2.

    2024年02月15日
    瀏覽(27)
  • pymysql的安裝及操作

    pymysql的安裝及操作

    以管理員身份運(yùn)行終端或者使用Anaconda Powershell Prompt并以管理員身份運(yùn)行 注意 :conda安裝pymysql后,只有使用conda解釋器才可以調(diào)用 1、找到python安裝位置,打開終端輸入 where python 2、輸入cd 進(jìn)入python位置目錄 3、進(jìn)入Scripts 4、輸入pip install pymysql即可 Python中的sql這個(gè)字符串,格

    2024年02月11日
    瀏覽(19)
  • python------Pymysql模塊

    總結(jié): fetchall(): 獲取所有查詢到的內(nèi)容。返回結(jié)果是嵌套的元組 fetchone(): 獲取一條數(shù)據(jù)。返回結(jié)果就是一個(gè)非嵌套的元組 fetchmany(num): 返回結(jié)果是元組嵌套,底層也是有游標(biāo)的。如果不傳遞參數(shù)num,默認(rèn)讀取一條數(shù)據(jù) 注意: 與文件讀取類似,讀取查詢的數(shù)據(jù)內(nèi)容的時(shí)候,底層

    2024年02月04日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包