pymysql

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)
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息