最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

python中的mysql操作教程及實(shí)例

2022-12-28 16:58 作者:限量版范兒  | 我要投稿

一. 數(shù)據(jù)庫在自動(dòng)化測試中的應(yīng)用

存測試數(shù)據(jù)

有的時(shí)候大批量的數(shù)據(jù),我們需要存到數(shù)據(jù)庫中,在測試的時(shí)候才能用到,測試的時(shí)候就從數(shù)據(jù)庫中讀取出來。這點(diǎn)是非常重要的!

存測試結(jié)果

二. python中的數(shù)據(jù)庫之必備前提條件

1. 安裝:pyMysql

python2中使用mysqldb,python3中不再支持,換成pyMysql

2. 安裝步驟

  1. 安裝pyMysql模塊:pip install PyMysql

  2. python連接mysql數(shù)據(jù)庫,需要下載驅(qū)動(dòng):https://dev.mysql.com/downloads/connector/python/mysqlmysql官方網(wǎng)站提供的驅(qū)動(dòng)版本,目前只支持到python3.4,python版本要與驅(qū)動(dòng)支持的版本匹配才能安裝成功

  3. 安裝mysql圖形界面Navicat,連接數(shù)據(jù)庫后,方便查看/編輯數(shù)據(jù)庫數(shù)據(jù)

(可選)安裝mysql服務(wù)端:https://dev.mysql.com/downloads/mysql/

3. 數(shù)據(jù)庫的常規(guī)操作

增刪改查,所以我們要學(xué)的也是利用python去數(shù)據(jù)庫里面讀取數(shù)據(jù),進(jìn)行增刪改查操作

三. python—mysql操作

對數(shù)據(jù)庫進(jìn)行操作步驟:

  1. 連接數(shù)據(jù)庫、創(chuàng)建游標(biāo)

  2. 準(zhǔn)備好增、刪、改、查sql語句

  3. 執(zhí)行sql語句

  4. 讀取執(zhí)行結(jié)果—執(zhí)行影響的行

  5. 關(guān)閉游標(biāo)、關(guān)閉連接(釋放連接數(shù))

數(shù)據(jù)庫連接信息如下:

IP地址、端口號、數(shù)據(jù)庫名字、登錄用戶名、密碼

pymysql中的連接數(shù)據(jù)庫方法:

conn = pymysql.Connect(host, port, db, user, passwd) cursorclass = pymysql.cursors.DictCursor ? 指定返回?cái)?shù)據(jù)為字典形式

創(chuàng)建游標(biāo):

cursor = conn.cursor() ?每次操作都需要獲取游標(biāo),才能進(jìn)行

四. python之查詢數(shù)據(jù)

1. 查詢數(shù)據(jù)語法

sql語句:select 字段 from 表名 where 條件語句

2. 展示數(shù)據(jù),需要調(diào)用如下函數(shù)

fetchall():返回的數(shù)據(jù)格式是列表形式的

fetchone():返回的數(shù)據(jù)格式是元組形式的(可以用cursorclass = pymysql.cursors.DictCursor改成字典的形式)

3. 條件語句的用法

重點(diǎn)看代碼,掌握用法

五. python之execute

execute中,sql語句的多種方式:

execute(sql語句、參數(shù)[可選]):

  1. 數(shù)據(jù)直接寫在sql語句中

  2. 用格式化的方式

sql語句中:列表和元組 ? %s代替      字典:%(鍵名)s代替 參數(shù):為真正的數(shù)值

例:

insert_sql = "insert into test1(id, name) values(%s, %s)" data = [14, 'xiaojian'] #字典 data1 = {'id': 14, 'name': 'xiaojian'} insert_sql = "insert into test1(id, name) values(%(id)s, %(name)s)" cursor.execute(insert_sql, data)

六. 提交和回滾

提交操作:在對數(shù)據(jù)庫進(jìn)行任何修改的情況下,都使用commit函數(shù)來提交操作

修改包括增加、修改、刪除數(shù)據(jù)等操作

提交修改:

conn.commit()

回滾操作:在對數(shù)據(jù)庫進(jìn)行修改的過程中,因任何異常而導(dǎo)致修改中斷,我們都應(yīng)該使用回滾操作使數(shù)據(jù)庫恢復(fù)到修改之前的狀態(tài)

回滾修改:

conn.rollback()

七. 實(shí)例

實(shí)例1:增加數(shù)據(jù)

#引入相關(guān)的庫 import pymysql mysql_host = "localhost" mysql_port = 3306 mysql_db = "xiaozhai" mysql_user = "root" mysql_passwd = "123456" #連接操作:編碼格式的指定,默認(rèn)返回?cái)?shù)據(jù)類型的指定 conn = pymysql.Connect(host=mysql_host, user=mysql_user, password=mysql_passwd,           db=mysql_db, port=mysql_port, charset="utf8mb4", cursorclass=pymysql.cursors.DictCursor) #獲取游標(biāo) cur = conn.cursor() #sql語句——增加數(shù)據(jù) sql_insert = "insert into python6(name, sex) values('xiaohua', 'female')" #執(zhí)行sql語句 try:   cur.execute(sql_insert)   conn.commit() except:   conn.rollback() #關(guān)閉連接、關(guān)閉游標(biāo) cur.close() conn.close()

運(yùn)行結(jié)果:

實(shí)例2:查詢數(shù)據(jù)

#引入相關(guān)的庫 import pymysql mysql_host = "localhost" mysql_port = 3306 mysql_db = "xiaozhai" mysql_user = "root" mysql_passwd = "123456" #連接操作:編碼格式的指定,默認(rèn)返回?cái)?shù)據(jù)類型的指定 conn = pymysql.Connect(host=mysql_host, user=mysql_user, password=mysql_passwd, ? ? ? ? ? ? ? ?db=mysql_db, port=mysql_port, charset="utf8mb4", ? ? ? ? ? ? ? ?cursorclass=pymysql.cursors.DictCursor) #獲取游標(biāo) cur = conn.cursor() #查詢語句 sql_select = "select * from python6" #執(zhí)行 cur.execute(sql_select) #獲取查詢結(jié)果——會獲取一條數(shù)據(jù) data_a = cur.fetchone() print(data_a) print("=============================") #獲取查詢結(jié)果——獲取所有條數(shù)據(jù)(游標(biāo)已經(jīng)到了第二條,從第二條開始讀) data_all = cur.fetchall() print(data_all) #關(guān)閉連接、關(guān)閉游標(biāo) cur.close() conn.close()

運(yùn)行結(jié)果

{'id': 1, 'sex': 'male', 'name': 'xiaozhai'} ============================= [{'id': 2, 'sex': 'male', 'name': 'xiaoli'}, {'id': 3, 'sex': 'female', 'name': 'xiaohua'}]

實(shí)例3:格式化方式插入數(shù)據(jù)

列表形式

#引入相關(guān)的庫 import pymysql mysql_host = "localhost" mysql_port = 3306 mysql_db = "xiaozhai" mysql_user = "root" mysql_passwd = "123456" #連接操作:編碼格式的指定,默認(rèn)返回?cái)?shù)據(jù)類型的指定 conn = pymysql.Connect(host=mysql_host, user=mysql_user, password=mysql_passwd, ? ? ? ? ? ? ? ?db=mysql_db, port=mysql_port, charset="utf8mb4", ? ? ? ? ? ? ? ?cursorclass=pymysql.cursors.DictCursor) #獲取游標(biāo) cur = conn.cursor() #格式化方式插入數(shù)據(jù) data_list = ["xiaozhao", "female"] sql_insert = "insert into python6(name, sex) values(%s, %s)" #執(zhí)行sql語句 try: ? ?cur.execute(sql_insert, data_list) ? ?conn.commit() except: ? ?conn.rollback() #關(guān)閉連接、關(guān)閉游標(biāo) cur.close() conn.close()

運(yùn)行結(jié)果


字典形式

#引入相關(guān)的庫 import pymysql mysql_host = "localhost" mysql_port = 3306 mysql_db = "xiaozhai" mysql_user = "root" mysql_passwd = "123456" #連接操作:編碼格式的指定,默認(rèn)返回?cái)?shù)據(jù)類型的指定 conn = pymysql.Connect(host=mysql_host, user=mysql_user, password=mysql_passwd, ? ? ? ? ? ? ? ?db=mysql_db, port=mysql_port, charset="utf8mb4", ? ? ? ? ? ? ? ?cursorclass=pymysql.cursors.DictCursor) #獲取游標(biāo) cur = conn.cursor() #格式化方式插入數(shù)據(jù) data_dict = {"name": "xiaoliu", "sex":"female"} sql_insert = "insert into python6(name, sex) values (%(name)s, %(sex)s)" #執(zhí)行sql語句 try: ? ?cur.execute(sql_insert, data_dict) ? ?conn.commit() except: ? ?conn.rollback() #關(guān)閉連接、關(guān)閉游標(biāo) cur.close() conn.close()

運(yùn)行結(jié)果

實(shí)例4:封裝成類

import pymysql class Mysql_Operate: ? ?def __init__(self, host, db, user, passwd, port=3306): #python學(xué)習(xí)交流群:711312441 ? ? ? ?#連接數(shù)據(jù)庫 ? ? ? ?try: ? ? ? ? ? ?self.conn = pymysql.Connect(host=host, user=user, password=passwd, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? db=db, port=port, charset="utf8mb4", ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cursorclass=pymysql.cursors.DictCursor) ? ? ? ? ? ?#獲取游標(biāo) ? ? ? ? ? ?self.cur = self.conn.cursor() ? ? ? ? ? ?#沒有異常,connect_flag為0 ? ? ? ? ? ?self.connect_flag = 0 ? ? ? ?except Exception as e: ? ? ? ? ? ?print(e) ? ? ? ? ? ?self.connect_flag = 1 ? ?#查找 ? ?def select_all_datas(self, select_sql): ? ? ? ?#查詢數(shù)據(jù)——execute函數(shù) ? ? ? ?self.cur.execute(select_sql) ? ? ? ?#獲取所有的數(shù)據(jù)并返回 ? ? ? ?data_all = self.cur.fetchall() ? ? ? ?return data_all ? ?#更新數(shù)據(jù) ? ?def update_datas(self, update_sql ): ? ? ? ?try: ? ? ? ? ? ?self.cur.execute(update_sql) ? ? ? ? ? ?self.conn.commit() ? ? ? ? ? ?return True ? ? ? ?except: ? ? ? ? ? ?self.conn.rollback() ? ? ? ? ? ?return False ? ?#關(guān)閉數(shù)據(jù)庫連接 ? ?def close_db(self): ? ? ? ?self.cur.close() ? ? ? ?self.conn.close() mysql_host = "localhost" mysql_port = 3306 mysql_db = "xiaozhai" mysql_user = "root" mysql_passwd = "123456" ms = Mysql_Operate(mysql_host, mysql_user, mysql_passwd, mysql_db) if ms.connect_flag == 0: ? ?pass

鏈接:https://www.dianjilingqu.com/647435.html

python中的mysql操作教程及實(shí)例的評論 (共 條)

分享到微博請遵守國家法律
白河县| 砚山县| 云南省| 金湖县| 周口市| 定远县| 太仓市| 集贤县| 芒康县| 巩留县| 卓资县| 洛川县| 青河县| 武穴市| 泰和县| 固安县| 聂荣县| 呼图壁县| 赫章县| 亳州市| 武清区| 陆川县| 泰宁县| 革吉县| 长春市| 江永县| 怀来县| 沂南县| 天柱县| 门头沟区| 兰考县| 周至县| 廊坊市| 齐齐哈尔市| 弥渡县| 滨州市| 永安市| 香港| 邢台市| 濮阳县| 江口县|