Python如何連接Mysql及基本操作


什么要做python連接mysql,一般是解決什么問題的

  做自動化測試時候,注冊了一個新用戶,產生了多余的數據,下次同一個賬號就無法注冊了,這種情況怎么辦呢?自動化測試都有數據准備和數據清理的操作,如果因此用例產生了多余數據,就需要清理數據,可以用Pyhthon連接Mysql直接刪除多余的數據就可以了。

  Python3如何連接Mysql呢?PyMySQL是在Py3版本用於連接Mysql


python連接mysql的模塊安裝

在線安裝

pip install PyMySQL

在Pycharm---點擊--Terminal---輸入pip install PyMySQL等待完裝完畢即可,如圖所示

img

離線安裝

有時候在線安裝第三方模塊的時,會因為網絡原因總是裝不上,那怎么辦呢?那就手動安裝

  1. 下載所需要的模塊包

img

  1. 解壓該文件

img

  1. 將文件名改短,然后放入非C盤且放在根目錄

  2. 打開cmd---->E:---->cd xlrd---->python setup.py install

  3. 等待完裝完畢

  4. 導入模塊 import xlrd,運行如果沒報錯就說明安裝正常


連接MySql

import pymysql
# 打開數據庫連接
db = pymysql.connect("localhost", "root", "111223", "study_date")

# 使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()

# 使用 execute()  方法執行 SQL 查詢
cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法獲取單條數據.
data = cursor.fetchone()

print("Database version : %s " % data)

# 關閉數據庫連接
db.close()

運行結果

數據庫基本操作

增加數據

insert 語句可以用來將一行或多行數據插到數據庫表中, 使用的一般形式如下:

insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);

其中 [ ] 內的內容是可選的, 例如, 要給study_date數據庫中的 studys 表插入一條記錄, 執行語句:


 1 import pymysql
 2 
 3 # 打開數據庫連接
 4 db = pymysql.connect("localhost", "root", "111223", "study_date")
 5 # 使用cursor()方法獲取操作游標
 6 cursor = db.cursor()
 7 insert_sql = 
 8 # 執行sql語句
 9 cursor.execute("insert into studys(id, name, age) values(3, '騎着烏龜趕豬', 35)") 
10 # 提交到數據庫執行 
11 db.commit() cursor.execute("select * from studys")
12 # 查看表里所有數據 
13 data = cursor.fetchall() 
14 print(data) # 關閉數據庫連接 db.close()

運行結果

再運行一次上以代碼,運行后報錯,兩個重要錯誤信息

1、錯誤在哪一行

img

2、這個錯誤原因

img

為防止插入數據時出現異常,所以加上try...except

 1 import pymysql
 2 
 3 # 打開數據庫連接
 4 db = pymysql.connect("localhost", "root", "111223", "study_date")
 5 
 6 # 使用cursor()方法獲取操作游標
 7 cursor = db.cursor()
 8 insert_sql = "insert into studys(id, name, age) values(3, '騎着烏龜趕豬', 35)"
 9 try:
10     # 執行sql語句
11     cursor.execute(insert_sql)
12     # 提交到數據庫執行
13     db.commit()
14     cursor.execute("select * from studys")
15     # 查看表里所有數據
16     data = cursor.fetchall()
17     print(data)
18 except:
19     print("數據插入失敗,請查檢try語句里的代碼")
20     # 關閉數據庫連接
21     # 如果想知道報了啥錯,可以主動拋出異常
22     # raise 
23     db.close()

運行結果:

img

刪除數據

delete 語句用於刪除表中的數據

delete from 表名稱 where 刪除條件;
import pymysql

# 打開數據庫連接
db = pymysql.connect("localhost", "root", "111223", "study_date")

# 使用cursor()方法獲取操作游標
cursor = db.cursor()
check_sql = 'select * from studys'
# SQL 刪除數據
del_sql = "delete from studys where id=3"
try:
    # 執行sql語句
    cursor.execute(del_sql)
    # 提交到數據庫執行
    db.commit()
    cursor.execute(check_sql)
    # 查看表里所有數據
    data = cursor.fetchall()
    print(data)
except:
    # 如果發生錯誤則回滾
    db.rollback()

# 關閉數據庫連接
db.close()

運行結果

修改數據

update 語句可用來修改表中的數據

update 表名稱 set 列名稱=新值 where 更新條件;
import pymysql

# 打開數據庫連接
db = pymysql.connect("localhost", "root", "111223", "study_date")

# 使用cursor()方法獲取操作游標
cursor = db.cursor()

check_sql = 'select * from studys'
# SQL 修改數據
updata_sql = "update studys set age=30 where id=2"
try:
    # 執行sql語句
    cursor.execute(updata_sql)
    # 提交到數據庫執行
    db.commit()
    cursor.execute(check_sql)
    # 查看表里所有數據
    data = cursor.fetchall()
    print(data)
except:
    # 如果發生錯誤則回滾
    db.rollback()

# 關閉數據庫連接
db.close()

運行結果

查詢數據

查詢單條數據

語法:

fetchone()

例如要查詢 students 表中所有學生的名字和年齡, 輸入語句

select name, age from studys

fetchone()獲取一行數據
 1 # 導入模塊
 2 import pymysql
 3 
 4 # 打開數據庫連接     數據庫地址
 5 db = pymysql.connect("localhost", "root", "111223", "study_date")
 6 
 7 # 使用 cursor() 方法創建一個游標對象 cursor
 8 cursor = db.cursor()
 9 
10 # 使用 execute()方法執行 SQL 查詢
11 # 通配符,意思是查詢表里所有內容
12 cursor.execute("select * from studys")
13 
14 # 使用 fetchone() 方法獲取一行數據.
15 data = cursor.fetchone()
16 print(data)
17 
18 # 關閉數據庫連接
19 db.close()

運行結果:

img

查詢多條數據
fetchall()獲取所有數據
 1 # 導入模塊,固定寫法
 2 import pymysql
 3 
 4 # 打開數據庫連接     數據庫地址
 5 db = pymysql.connect("localhost", "root", "111223", "study_date")
 6 
 7 # 使用 cursor() 方法創建一個游標對象 cursor
 8 cursor = db.cursor()
 9 
10 # 使用 execute()  方法執行 SQL 查詢
11 cursor.execute("select * from studys")
12 
13 # 使用 fetchall() 方法獲取所有數據.以元組形式返回
14 data = cursor.fetchall()
15 print(data)
16 
17 # 關閉數據庫連接
18 db.close()

運行結果

img

如果對軟件測試、接口測試、自動化測試、技術同行、持續集成、面試經驗交流。感興趣可以進到893694563,群內會有不定期的分享測試資料。
如果文章對你有幫助,麻煩伸出發財小手點個贊,感謝您的支持,你的點贊是我持續更新的動力。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM