Python之Pymysql模块操作MySQL增删改查
?
Python3 MySQL 數據庫連接 - PyMySQL 驅動
PyMySQL 連接數據庫,實現增刪改查
什么是 PyMySQL?
PyMySQL 是在 Python3.x 版本中用于連接 MySQL 服務器的一個庫,Python2中則使用mysqldb。
PyMySQL 遵循 Python 數據庫 API v2.0 規范,并包含了 pure-Python MySQL 客戶端庫。
安裝PyMySQL
$ pip install PyMySQL
?
1、創建數據庫連接
在操作mysql之前,首先要與mysql建立連接
conn=pymysql.connect(host="mysql域名/ip",user="用戶名",password="密碼",db="庫名",port=端口號3306,charset=‘utf-8’)
2、創建游標對象
當游標建立之時,就自動開始了一個隱形的數據庫事務
#使用 cursor() 方法創建一個游標對象 cursor
cursor = conn.cursor()
3、執行sql語句
sql=“select * from user”
?cursor.execute(sql) 或??cursor.execute(“select * from user”)
4、提交
conn.commit()
5、回滾
conn.rollback()方法回滾當前游標的所有操作。每一個方法都開始了一個新的事務
5、關閉游標
cursor.close()
6、關閉數據庫連接
conn.close()
?
?
?
創建數據庫連接
import pymysql #創建數據庫連接 db=pymysql.connect(host="數據庫域名/ip",user="賬號",password="密碼",db="庫名",port=3306) print(db) #使用 cursor() 方法創建一個游標對象 cursor cursor = db.cursor() print(cursor) #使用 execute() 方法執行 SQL 查詢 cursor.execute("select * from user where mobile") # 使用 fetchone() 方法. results1= cursor.fetchone()#獲取單條(第1條)數據 results2=cursor.fetchmany(3)#獲取3條(2、3、4)數據 results3=cursor.fetchall() #獲取全部(5-全部)數據 print(results3) #關閉游標,又從起始位置開始 cursor.close() # 關閉數據庫連接 db.close()C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py <pymysql.connections.Connection object at 0x00000161DDC90E80> <pymysql.cursors.Cursor object at 0x00000161DF8E44E0>數據省略Process finished with exit code 0創建數據庫表
#!/usr/bin/python3import pymysql# 打開數據庫連接 db = pymysql.connect("localhost","testuser","test123","TESTDB" )# 使用 cursor() 方法創建一個游標對象 cursor cursor = db.cursor()# 使用 execute() 方法執行 SQL,如果表存在則刪除 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")# 使用預處理語句創建表 sql = """CREATE TABLE EMPLOYEE (FIRST_NAME CHAR(20) NOT NULL,LAST_NAME CHAR(20),AGE INT, SEX CHAR(1),INCOME FLOAT )"""cursor.execute(sql)# 關閉數據庫連接 db.close()數據庫插入操作
import pymysql #創建數據庫連接 db=pymysql.connect(host="",user="",password="",db="ck",port=3306) print(db) #使用 cursor() 方法創建一個游標對象 cursor cursor = db.cursor() print(cursor) sql="INSERT INTO j.store (id,company_id,title,address,district,lon,lat,remark,updated_at,created_at,deleted_at) VALUES ('195', '61', '虹橋路店', '虹橋路1027號', '', '0.000000', '0.000000', NULL, '2019-03-15 14:54:29', '2019-03-15 14:54:29', NULL)"#寫法2 #cursor.execute('insert into stu(id,name,age) values(%s,%s,%s)',('201611001','xiaoqian',20))#插入多條數據,具體數據用列表來保存,列表元素是元組 #cur.executemany('insert into stu(id,name,age) values(%s,%s,%s)',[('201611001','xiaoqian',20),('201611002','smile',21),('201611003','wood',23)])try:#執行插入sqlcursor.execute(sql)# 提交到數據庫執行db.commit() except:# 如果發生錯誤則回滾db.rollback() # 關閉數據庫連接 db.close()C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py <pymysql.connections.Connection object at 0x00000295DEA90EB8> <pymysql.cursors.Cursor object at 0x00000295E06B44E0>Process finished with exit code 0?
?
數據庫查詢操作
Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。
- fetchone():?該方法獲取下一個查詢結果集。結果集是一個對象
- fetchall():?接收全部的返回結果行.
- rowcount:?這是一個只讀屬性,并返回執行execute()方法后影響的行
? ? 1、單條sql語句查詢
sql = "SELECT * FROM EMPLOYEE? WHERE INCOME > %s" % (1000)
?
? ? 2、多條sql語句查詢
- import pymysql
#創建數據庫連接
db=pymysql.connect(host="",user="",password="",db="",port=3306)
print(db)
#使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()
print(cursor)
sql="select * from c.user limit 10"
try:#執行sql語句cursor.execute(sql)#查詢所有記錄results=cursor.fetchall()print(results)#打印10條數據for row in results:print(row)#循環打印每條數據user_id=row[0]#第1列字段mobile=row[1]#第2列字段print(user_id,mobile)#循環打印第1、2列字段
except:print('查詢失敗')
#關閉數據庫連接
db.close()C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
<pymysql.connections.Connection object at 0x0000018E8BEDB748>
<pymysql.cursors.Cursor object at 0x0000018E8DB34550>
((2, '13888888888', '新', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554291602, 0, 1, 0, datetime.datetime(2019, 4, 3, 19, 37, 21), datetime.datetime(2019, 4, 3, 19, 49, 19), None), (75, '13888888888', '小', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554291602, 0, 1, 0, datetime.datetime(2019, 4, 3, 19, 37, 21), datetime.datetime(2019, 4, 3, 19, 49, 19), None), (139, '13888888888', '林', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554088503, 0, 2, 0, datetime.datetime(2019, 4, 1, 11, 11, 37), datetime.datetime(2019, 4, 1, 11, 15, 3), None), (190, '13888888888', '大', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 28), datetime.datetime(2019, 4, 1, 10, 45, 2), None), (192, '13888888888', '磊', '33010019900530156x', 0, '', '', '', 1, 1, '', '', '', '', '', 30, 13888888888, 0, 2, 0, datetime.datetime(2019, 3, 29, 17, 26, 56), datetime.datetime(2019, 4, 3, 19, 49, 19), None), (199, '13888888888', '一', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 2, 0, datetime.datetime(2019, 4, 1, 10, 40, 28), datetime.datetime(2019, 4, 1, 16, 8, 3), None), (202, '13888888888', '三', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 29), datetime.datetime(2019, 4, 1, 10, 45, 2), None), (203, '13888888888', '四', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 29), datetime.datetime(2019, 4, 1, 10, 45, 2), None), (230, '13888888888', '大', '320382199303242813', 0, '', '', '', 1, 1, '', '', '', '', '', 30, 1554291602, 0, 2, 0, datetime.datetime(2019, 4, 3, 19, 37, 20), datetime.datetime(2019, 4, 3, 20, 11, 18), None), (278, '13700000003', '三', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554171902, 0, 2, 0, datetime.datetime(2019, 4, 2, 10, 24, 35), datetime.datetime(2019, 4, 2, 10, 25, 8), None))
(2, '13888888888', '林', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554291602, 0, 1, 0, datetime.datetime(2019, 4, 3, 19, 37, 21), datetime.datetime(2019, 4, 3, 19, 49, 19), None)
2 13888888888
(75, '13888888888', '馬', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554291602, 0, 1, 0, datetime.datetime(2019, 4, 3, 19, 37, 21), datetime.datetime(2019, 4, 3, 19, 49, 19), None)
75 18817893609
(139, '13888888888', '林', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554088503, 0, 2, 0, datetime.datetime(2019, 4, 1, 11, 11, 37), datetime.datetime(2019, 4, 1, 11, 15, 3), None)
139 13888888888
(190, '13888888888', '徐', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 28), datetime.datetime(2019, 4, 1, 10, 45, 2), None)
190 13888888888
(192, '13888888888', '王', '330', 0, '', '', '', 1, 1, '', '', '', '', '', 30, 1553851802, 0, 2, 0, datetime.datetime(2019, 3, 29, 17, 26, 56), datetime.datetime(2019, 4, 3, 19, 49, 19), None)
192 13888888888
(199, '13888888888', '李', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 2, 0, datetime.datetime(2019, 4, 1, 10, 40, 28), datetime.datetime(2019, 4, 1, 16, 8, 3), None)
199 13888888888
(202, '13888888888', '三', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 29), datetime.datetime(2019, 4, 1, 10, 45, 2), None)
202 13888888888
(203, '13888888888', '四', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 29), datetime.datetime(2019, 4, 1, 10, 45, 2), None)
203 13888888888
(230, '13888888888', '小', '320', 0, '', '', '', 1, 1, '', '', '', '', '', 30, 1554291602, 0, 2, 0, datetime.datetime(2019, 4, 3, 19, 37, 20), datetime.datetime(2019, 4, 3, 20, 11, 18), None)
230 13888888888
(278, '13700000003', '王', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554171902, 0, 2, 0, datetime.datetime(2019, 4, 2, 10, 24, 35), datetime.datetime(2019, 4, 2, 10, 25, 8), None)
278 13700000003Process finished with exit code 0
?
數據庫更新操作
sql語句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
sql="update c.user set sex=2 where mobile=18221124104"
cur.execute('update stu set age = %s where id = %s',(25,'201611006'))
?
import pymysql #創建數據庫連接 conn=pymysql.connect(host="",user="qa",password="Qa",db="c",port=3306) print(conn) #使用 cursor() 方法創建一個游標對象 cursor cursor = conn.cursor() print(cursor) sql="update c.user set sex=2 where mobile=18221124104" try:cursor.execute(sql)conn.commit() except:conn.rollback() conn.close()C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py <pymysql.connections.Connection object at 0x000002C281555A20> <pymysql.cursors.Cursor object at 0x000002C2831944A8>Process finished with exit code 0?
刪除操作
#!/usr/bin/python3import pymysql# 打開數據庫連接 db = pymysql.connect("localhost","testuser","test123","TESTDB" )# 使用cursor()方法獲取操作游標 cursor = db.cursor()# SQL 刪除語句 sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20) try:# 執行SQL語句cursor.execute(sql)# 提交修改db.commit() except:# 發生錯誤時回滾db.rollback()# 關閉連接 db.close()?
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Python之Pymysql模块操作MySQL增删改查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python manage.py syn
- 下一篇: java 连接mysql工具类_java