MySQL之pymysql模块
生活随笔
收集整理的這篇文章主要介紹了
MySQL之pymysql模块
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PyMySQL介紹
PyMySQL 是在 Python3.x 版本中用于連接 MySQL 服務器的一個庫,Python2中則使用mysqldb。
Django中也可以使用PyMySQL連接MySQL數據庫。
PyMySQL安裝
pip install pymysql 連接數據庫
注意事項
在進行本文以下內容之前需要注意:
- 你有一個MySQL數據庫,并且已經啟動。
- 你有可以連接該數據庫的用戶名和密碼
- 你有一個有權限操作的database
基本使用
import pymysql#s鏈接數據庫
conn = pymysql.connect(host = '127.0.0.1', #被連接數據庫的ip地址port = 3306, #數據庫服務端端口號user = 'root', #用戶名password = '123456', #密碼database = 'db1', #選擇庫charset = 'utf8' #編碼格式
)#拿到執行sql語句的游標
cur = conn.cursor()# 如果想要字典格式的查詢結果,可以設置cursor屬性,這樣返回的就是一個字典形式的結果,key值為字段名,value為值
# cur_dic = conn.cursor(cursor=pymysql.cursors.DictCursor)#查詢語句
select_sql = 'select * from auth'#執行sql語句
cur.execute(select_sql)#獲取單條查詢結果
# res1 = cur.fetchone()#獲取指定行數的查詢結果
# res2 = cur.fetchmany(3)#獲取全部查詢結果
res3 = cur.fetchall()#輸出查詢結果
#注意,如果有多條獲取查詢的語句,游標會從上一次的位置開始查詢
#比如說如果有兩條 cur.fetchall() 那么第二次查詢結果為空
#可以用cur.scroll()方法來控制游標
# cur.scroll(n,mode='absolute') 移動到絕對位置 n
# cur.scroll(n,mode='relative') 移動到相對位置 n
print(res3)#插入語句
#可以直接寫插入的值,也可以用%s來占位,然后傳參
insert_sql = 'insert into auth (name,age,address) values (%s,%s,%s)'#傳入參數的時候用元組或者列表來裝插入值
cur.execute(insert_sql,('auth1',18,'北京'))#如果要傳多個參數值
cur.executemany(insert_sql,[('auth2',19,'北京'),('auth3',20,'北京')])#提交數據
conn.commit()#關閉游標
cur.close()#關閉鏈接
conn.close()
返回字典格式數據:
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) 增刪改查操作
增
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "Alex"
age = 18
# 執行SQL語句
cursor.execute(sql, [username, age])
# 提交事務
conn.commit()
cursor.close()
conn.close()
插入數據失敗回滾
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "Alex"
age = 18
try:# 執行SQL語句cursor.execute(sql, [username, age])# 提交事務conn.commit()
except Exception as e:# 有異常,回滾事務conn.rollback()
cursor.close()
conn.close()
獲取插入數據的ID(關聯操作時會用到)
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "Alex"
age = 18
try:# 執行SQL語句cursor.execute(sql, [username, age])# 提交事務conn.commit()# 提交之后,獲取剛插入的數據的IDlast_id = cursor.lastrowid
except Exception as e:# 有異常,回滾事務conn.rollback()
cursor.close()
conn.close()
批量執行
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
data = [("Alex", 18), ("Egon", 20), ("Yuan", 21)]
try:# 批量執行多條插入SQL語句cursor.executemany(sql, data)# 提交事務conn.commit()
except Exception as e:# 有異常,回滾事務conn.rollback()
cursor.close()
conn.close()
刪
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "DELETE FROM USER1 WHERE id=%s;"
try:cursor.execute(sql, [4])# 提交事務conn.commit()
except Exception as e:# 有異常,回滾事務conn.rollback()
cursor.close()
conn.close()
改
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
# 修改數據的SQL語句
sql = "UPDATE USER1 SET age=%s WHERE name=%s;"
username = "Alex"
age = 80
try:# 執行SQL語句cursor.execute(sql, [age, username])# 提交事務conn.commit()
except Exception as e:# 有異常,回滾事務conn.rollback()
cursor.close()
conn.close()
?
查
查詢單條數據
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
# 查詢數據的SQL語句
sql = "SELECT id,name,age from USER1 WHERE id=1;"
# 執行SQL語句
cursor.execute(sql)
# 獲取單條查詢數據
ret = cursor.fetchone()
cursor.close()
conn.close()
# 打印下查詢結果
print(ret)
查詢多條數據
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
# 查詢數據的SQL語句
sql = "SELECT id,name,age from USER1;"
# 執行SQL語句
cursor.execute(sql)
# 獲取多條查詢數據
ret = cursor.fetchall()
cursor.close()
conn.close()
# 打印下查詢結果
print(ret)
?進階用法
# 可以獲取指定數量的數據
cursor.fetchmany(3)
# 光標按絕對位置移動1
cursor.scroll(1, mode="absolute")
# 光標按照相對位置(當前位置)移動1
cursor.scroll(1, mode="relative")
轉載于:https://www.cnblogs.com/fu-yong/p/8504596.html
總結
以上是生活随笔為你收集整理的MySQL之pymysql模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 岁月不饶人画是谁画的呢?
- 下一篇: 江山多少钱啊?