Python3鏈接MySQL
本文介紹Python3鏈接MySQL的第三方庫--PyMySQL的基本使用。mysql
PyMySQL介紹
PyMySQL 是在 Python3.x 版本中用於鏈接 MySQL 服務器的一個庫,Python2中則使用mysqldb。sql
Django中也能夠使用PyMySQL鏈接MySQL數據庫。數據庫
PyMySQL安裝
pip install pymysql
鏈接數據庫
注意事項
在進行本文如下內容以前須要注意:服務器
- 你有一個MySQL數據庫,而且已經啓動。
- 你有能夠鏈接該數據庫的用戶名和密碼
- 你有一個有權限操做的database
基本使用
# 導入模塊 import pymysql #獲取連接 conn = pymysql.connect( host="127.0.0.1", #數據庫地址 port=3306, #數據庫端口號 user="root", #用戶名 password="", #密碼 database="db1", #要執行的數據庫 charset="utf8" ) cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) #獲取光標對象,括號內能夠不寫,這樣寫是返回字典格式的數據 sql="select * from userinfo;" #要執行的sql語句 cursor.execute(sql) #執行sql語句 ret=cursor.fetchall() cursor.close() #關閉光標對象 conn.close() #關閉連接 print(ret)
增刪改查操做
增
# 導入模塊 import pymysql name=input("姓名") pwd=input("密碼") #獲取連接 conn = pymysql.connect( host="127.0.0.1", #數據庫地址 port=3306, #數據庫端口號 user="root", #用戶名 password="", #密碼 database="day59", #要執行的數據庫 charset="utf8" ) cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) #獲取光標對象,括號內能夠不寫,這樣寫是返回字典格式的數據 sql="insert into userinfo(name,pwd) values (%s,%s);" #要執行的sql語句 cursor.execute(sql,[name,pwd]) #執行sql語句 前面是語句,後面是一個課迭代的,按位置傳 conn.commit() #提交(涉及對錶格的修改,必須提交) cursor.close() #關閉光標對象 conn.close() #關閉連接
# 導入模塊 import pymysql #獲取連接 conn = pymysql.connect( host="127.0.0.1", #數據庫地址 port=3306, #數據庫端口號 user="root", #用戶名 password="", #密碼 database="day59", #要執行的數據庫 charset="utf8" ) cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) #獲取光標對象,括號內能夠不寫,這樣寫是返回字典格式的數據 sql="insert into userinfo(name,pwd) values (%s,%s);" #要執行的sql語句 data = [("a","1"), #把要添加的數據放在一個列表裏,而後執行sql時,把該列表放在後面 ("b","2"), ("c","3") ] cursor.execute(sql,data) #執行sql語句 前面是語句,後面是一個可迭代的,按位置傳 conn.commit() #提交(涉及對錶格的修改,必須提交) cursor.close() #關閉光標對象 conn.close() #關閉連接
插入數據失敗回滾:conn.rollback()ide
import pymysql # 創建鏈接 conn = pymysql.connect( host="127.0.0.1", port=3306, # 不是字符串類型(不要加引號) user="root", password="123456", database="day59", charset="utf8" # 沒有-!!!! ) # 獲取一個光標 cursor = conn.cursor() # 定義將要執行的SQL語句 sql1 = "insert into userinfo (name, pwd) values (%s, %s);" sql2 = "insert into book (name) values (%s);" name = "wangzhen2號" pwd = "123456" book_title = "Python從入門到放棄" try: # 拼接並執行SQL語句 cursor.execute(sql1, [name, pwd]) cursor.execute(sql2) # 報錯的SQL語句 # 涉及寫操做注意要提交 conn.commit() except Exception as e: print(str(e)) # 有異常就回滾 conn.rollback() # 關閉鏈接 cursor.close() conn.close()
獲取插入數據的ID(關聯操做時會用到)fetch
import pymysql # 創建鏈接 conn = pymysql.connect( host="127.0.0.1", port=3306, # 不是字符串類型(不要加引號) user="root", password="123456", database="day59", charset="utf8" # 沒有-!!!! ) # 獲取一個光標 cursor = conn.cursor() # 定義將要執行的SQL語句 sql = "insert into userinfo (name, pwd) values (%s, %s);" name = "wangzhen3號" pwd = "123456" # 拼接並執行SQL語句 cursor.execute(sql, [name, pwd]) # 涉及寫操做注意要提交 conn.commit() # 獲取最新的那一條數據的ID last_id = cursor.lastrowid print("最後一條數據的ID是:", last_id) cursor.close() conn.close()
刪
# 導入模塊 import pymysql #獲取連接 conn = pymysql.connect( host="127.0.0.1", #數據庫地址 port=3306, #數據庫端口號 user="root", #用戶名 password="", #密碼 database="day59", #要執行的數據庫 charset="utf8" ) cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) #獲取光標對象,括號內能夠不寫,這樣寫是返回字典格式的數據 sql="delete from userinfo where name=%s ;" #要執行的sql語句 name="liulin" cursor.execute(sql,[name]) #執行sql語句 前面是語句,後面是一個可迭代的,按位置傳 conn.commit() #提交(涉及對錶格的修改,必須提交) cursor.close() #關閉光標對象 conn.close() #關閉連接
改
import pymysql # 創建鏈接 conn = pymysql.connect( host="127.0.0.1", port=3306, # 不是字符串類型(不要加引號) user="root", password="123456", database="day59", charset="utf8" # 沒有-!!!! ) # 獲取一個光標 cursor = conn.cursor() # 定義將要執行的SQL語句 sql = "update userinfo set pwd=%s where name=%s;" # 拼接並執行SQL語句 cursor.execute(sql, ["woshixinmima", "alex"]) # 涉及寫操做注意要提交 conn.commit() # 關閉鏈接 cursor.close() conn.close()
查
多種查詢數據方法spa
import pymysql # 創建鏈接 conn = pymysql.connect( host="127.0.0.1", port=3306, # 不是字符串類型(不要加引號) user="root", password="123456", database="day59", charset="utf8" # 沒有-!!!! ) # 獲取一個光標 # cursor = conn.cursor() # 默認返回元祖類型的數據 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 返回字典類型的數據 # 定義將要執行的SQL語句 sql = "select name, pwd from userinfo;" # 拼接並執行SQL語句 cursor.execute(sql) # 取到查詢結果 ret1 = cursor.fetchone() # 取一條 ret2 = cursor.fetchmany(3) # 取三條 # cursor.scroll(1, mode="absolute") # 絕對移動,你指哪兒 它就移到哪兒 cursor.scroll(1, mode="relative") # 相對移動, 相對它當前在的位置 cursor.scroll(-1, mode="relative") # 相對移動, 相對它當前在的位置 ret3 = cursor.fetchone() # 取一條 # ret = cursor.fetchall() # 取全部 # 關閉鏈接 cursor.close() conn.close() print(ret1) print(ret2) print(ret3)