python筆記33-python3連mysql增刪改查


前言

做自動化測試的時候,注冊了一個新用戶,產生了多余的數據,下次用同一賬號就無法注冊了,這種情況該怎么辦呢?
自動化測試都有個數據准備和數據清理的操作,如果因為此用例產生了多余的數據,就需要數據清理,可以用python連接mysql直接刪除多余的數據就可以了。
那么python3如何連接mysql呢?PyMySQL 是在 Python3.x 版本中用於連接 MySQL 服務器的一個庫,Python2中則使用mysqldb。

環境准備:
python3.6
PyMySQL 0.9.2

環境准備

使用pip安裝PyMySQL

pip install PyMySQL

先使用第三方工具連接mysql數據庫,比如navicat連接mysql,參考這篇https://www.cnblogs.com/yoyoketang/p/9994078.html

如下圖連接測試通過,那么連接數據庫至少應該知道這些信息,用戶名和密碼是授權遠程客戶端的用戶名和密碼,授權相關參考這篇https://www.cnblogs.com/yoyoketang/p/10268896.html

連接名: 自己定義,這個無所謂
主機名或ip地址:mysql服務的ip地址
端口:3306 (端口號,默認一般是3306)
用戶名:root (授權遠程登錄的用戶名)
密碼:123456 (授權遠程登錄的密碼)

查詢操作

如果新建了一個test數據庫,里面有一張user表,有name和psw兩個字段,使用sql查詢結果如下

select name,psw from user

接下來使用python轉換成對應的代碼查詢

import pymysql

# 打開數據庫連接
db = pymysql.connect(host='47.104.x.x',
                     port=3306,
                     user='root',
                     passwd='123456',
                     db='test')

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

# 使用 execute()  方法執行 SQL 查詢
cur.execute("select name, psw from user")

# 使用 fetchall() 方法獲取查詢結果
data = cur.fetchall()

print(data)

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

運行結果:

(('yoyo_1', '111111'), ('yoyo', '123456'), ('yoyo_2', '111111'), ('yoyo_3', '222222'), ('yoyo_4', '444444'))

如果想查詢結果以字典格式輸出,可以用db.cursor(cursor=pymysql.cursors.DictCursor)推薦!!!

有時候我們只想查詢某個字段對應的值,比如查詢yoyo_1賬號對應的psw值,並且取出來

select psw from user where name='yoyo_1'

查詢的結果是(('111111',),) 元組嵌套元組,取值的話用下標取出來就可以了

import pymysql

def select_db(sql):
    '''查詢數據庫'''
    # 打開數據庫連接
    db = pymysql.connect(host='47.104.x.x',
                         port=3306,
                         user='root',
                         passwd='123456',
                         db='test')

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

    # 使用 execute()  方法執行 SQL 查詢
    cur.execute(sql)

    # 使用 fetchall() 方法獲取查詢結果
    data = cur.fetchall()
    # print(data)  # 取出對應的psw值

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

if __name__ == "__main__":
    sql = "select psw from user where name='yoyo_3'"
    a = select_db(sql)[0][0]
    print("查詢結果:%s" %str(a))

刪除操作

使用python刪除一條數據,比如我要刪除yoyo_1這條記錄

delete from user where name='yoyo_1'

import pymysql


def delete_db(sql_delete):
    '''刪除操作'''
    # 打開數據庫連接
    db = pymysql.connect(host='47.104.x.x',
                         port=3306,
                         user='root',
                         passwd='123456',
                         db='test')

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

    try:
        cur.execute(sql_delete)  # 執行
        # 提交
        db.commit()
    except Exception as e:
        print("操作異常:%s" % str(e))
        # 錯誤回滾
        db.rollback()
    finally:
        db.close()

if __name__ == '__main__':
    sql_delete ="delete from user where name='yoyo_1' "
    delete_db(sql_delete)

更新操作

更新name用戶名是yoyo的用戶,把psw改成666666

update user set psw='666666' where name='yoyo'

import pymysql


def update_db(sql_update):
    '''3.更新操作'''
    db = pymysql.connect(host='47.104.x.x',
                         port=3306,
                         user='root',
                         passwd='123456',
                         db='test')

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

    try:
        cur.execute(sql_update)  # 執行sql
        # 提交
        db.commit()
    except Exception as e:
        # 錯誤回滾
        print("錯誤信息:%s" % str(e))
        db.rollback()
    finally:
        db.close()

if __name__ == '__main__':
    sql_update ="update user set psw='666666' where name='yoyo'"
    update_db(sql_update)

新增數據

往數據庫里面插入一條數據,比如在user表里面新增一個用戶信息yoyo_10,123456

insert into user(id, name, psw) values(10, 'yoyo_10', '123456')

import pymysql


def insert_db(sql_insert):
    '''插入操作'''
    db = pymysql.connect(host='47.104.x.x',
                         port=3306,
                         user='root',
                         passwd='123456',
                         db='test')
    # 使用cursor()方法獲取操作游標
    cur = db.cursor()

    try:
        cur.execute(sql_insert)
        # 提交
        db.commit()
    except Exception as e:
        print("錯誤信息:%s" % str(e))
        # 錯誤回滾
        db.rollback()
    finally:
        db.close()

if __name__ == "__main__":
    sql_insert = "insert into user(id, name, psw) values(10, 'yoyo_10', '123456')"
    insert_db(sql_insert)

從上面的代碼可以看出,除了查詢的代碼不一樣,新增、刪除、更新數據庫操作代碼都一樣,只是執行的sql不一樣

python自動化交流 QQ群:779429633


免責聲明!

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



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