使用PyMySQL操作MySQL數據庫


安裝

pip3 install PyMySQL或者python3 -m pip install PyMySQL

連接MySQL數據庫

注意:連接之前先確保你已經安裝MySQL數據庫

MYSQL_CONFIG = {
    'host': 'localhost',  # IP地址
    'port': 3306,  # 端口
    'user': 'root',  # 用戶名
    'passwd': '123456',  # 密碼
    'db': 'myclass',  # 數據庫
    'charset': 'utf8',  # 編碼
}

conn = pymysql.connect(**MYSQL_CONFIG)  # 數據庫連接
cur = conn.cursor()  # 游標對象

MYSQL_CONFIG中的指標為連接數據庫的重要參數,參數的相關說明請看以上注釋,相關參數的值請換成你自己的。

本人習慣將參數以字典的方式存儲,並在連接時用兩個*號來對字典進行解包(有興趣的小伙伴可以自行搜索python容器解包的相關知識),這樣做的好處就是可以抽取關鍵數據,並將數據放在可配置化腳本中。

當然,你也可以用關鍵字參數的形式把數據寫到connect()方法中,如pymysql.connect(host = 'localhost', port = 3306, ...)

創建連接后我們可以得到一個數據庫連接對象conn和游標對象cur

執行SQL查詢語句

成功連接數據庫后,我們就可以執行相關的SQL語句來增刪改查我們的數據了。

myclass數據庫中存在student表,我們執行SQL語句來查詢student表中的數據
數據表如下

name age height
Mary 18 155.0
Tony 20 175.0
Lisa 19 165.5

執行SQL語句需要用到cur對象中的execute()方法

執行后獲取數據的方法主要有以下三種:

  • fetchone(): 獲取下一個查詢結果集,結果集是一個對象,第一次執行取SQL結果集的第一條數據
  • fetchmany(n): 獲取前n條數據的結果集
  • fetchall(): 獲取全部的數據結果集
fetchone
sql = "SELECT * FROM student"
n = cur.execute(sql) # 執行后得到數據的條數
for i in range(n):
    print(f'--這是第{i + 1}條數據--')
    info = cur.fetchone()
    print(info)

執行結果如下

--這是第1條數據--
('Mary', 18, 155.0)
--這是第2條數據--
('Tony', 20, 175.0)
--這是第3條數據--
('Lisa', 19, 165.5)

n值是執行查詢語句返回的結果條數,fetchone()第一次執行取的是第一條數據,之后執行就是取下一條數據,遍歷n就可以取到每一條數據。

fetchmany
sql = "SELECT * FROM student"
n = cur.execute(sql) # 執行后得到數據的條數
info = cur.fetchmany(2)  # 取前面兩條數據
print(info)

執行結果如下

(('Mary', 18, 155.0), ('Tony', 20, 175.0))

fetchmany()可以取執行結果集的任意條數據,如果取n則返回全部數據的數據集。

fetchall
sql = "SELECT * FROM student"
n = cur.execute(sql) # 執行后得到數據的條數
info = cur.fetchall() # 取所有數據
print(info)

執行結果如下

(('Mary', 18, 155.0), ('Tony', 20, 175.0), ('Lisa', 19, 165.5))

fetchall()就是取執行結果的所有數據的數據集

執行SQL插入語句

上面已經對PyMySQL中SQL的查詢方式進行了簡單的說明和實現,至於其他的增、刪、改操作其實跟上面的查詢操作差不多,主要還是使用到cur對象的execute()方法來執行。

但是執行增、刪、改操作時需要注意的是,在使用execute()方法執行SQL語句后,還要在后面加一句conn.commit(),用於將事務提交到數據庫執行。

如下

sql = "INSERT INTO student VALUES ('Ben', 19, 166.5)"
cur.execute(sql)  # 執行
conn.commit()  # 提交

執行成功后,可以通過查詢方法fatchall查看結果,結果如下

(('Mary', 18, 155.0), ('Tony', 20, 175.0), ('Lisa', 19, 165.5), ('Ben', 19, 166.5))

可以看到最后面多了一條新的數據,說明數據插入成功。

刪和改的操作跟插入是一樣的,在這里就不做過多演示了,有興趣的小伙伴可以自己嘗試去實現。
務必記得要加上commit()語句哦,否則執行后不會發生任何變化。

關閉數據庫

在執行完增、刪、改、查操作后,最后一定記得要關閉游標和數據庫連接,以避免數據庫資源的消耗和產生不同連接之間的沖突。

關閉語句如下

cur.close()  # 關閉游標
conn.close()  # 關閉數據庫連接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM