pymysql連接數據庫,讀取表內容


python中有MySQLdb、pymysql,psycopg2(連接postgresql)等數據庫模塊,本文用pymysql模塊連接mysql數據庫,並且讀取數據庫表

看過其他博文的介紹,把程序和數據庫比作兩個目的地,將游標比喻成運輸貨車

很是形象生動!

我用的是Anaconda的編輯器spyder,首先要先下載pymysql模塊到本地才能導入

導入pymysql模塊

import pymysql as pysql

建立連接和准備sql   

連接mysql數據庫,將數據庫名db,主機 host ,端口port,用戶user,密碼password,字符集編碼charset,   指定游標類型:cursorclass    模塊自帶的游標類型為 pymysql.cursors.DictCursor,其他模塊的游標像MySQLdb.cursors.Cursor,就看你用什么模塊了。

connection = pysql.connect(host='', port=, user='',password='',db='',charset='utf8mb4', cursorclass = pysql.cursors.DictCursor)

參數參考:https://blog.csdn.net/qq_41432935/article/details/83001381 

host – 數據庫服務器所在的主機。
user – 登錄用戶名。
password – 登錄用戶密碼。
database – 連接的數據庫。
port – 數據庫開放的端口。(默認: 3306)
bind_address – 當客戶端有多個網絡接口時,請指定連接到主機的接口,參數可以是主機名或IP地址。
unix_socket – 使用unix套接字而不是tcp/ip。
charset – 連接字符集。
sql_mode – 默認SQL模式。
read_default_file – 指定my.cnf文件路徑,以便從[client]部分讀取參數。
conv – 要使用的轉換字典,而不是默認值。
use_unicode – 是否默認為unicode字符串,對於Py3k,此選項默認為true。
client_flag – 發送到MySQL的自定義標志。
cursorclass – 使用自定義的游標類。
init_command – 建立連接時要運行的初始SQL語句。
connect_timeout – 建立連接超時時間。(默認: 10,最小: 1,最大: 31536000)
read_default_group – 從配置文件中讀取組。
compress – 不支持
named_pipe – 不支持
autocommit – 設置自動提交模式,不設置意味着使用數據庫默認。(默認值: False)
local_infile – 是否啟用“LOAD LOCAL INFILE”命令的使用。(默認值: False)
max_allowed_packet – 發送到服務器的數據包的最大大小 (以字節為單位,默認值: 16MB),僅用於限制小於默認值 (16KB) 的 “LOAD LOCAL INFILE” 數據包的大小。
defer_connect – 不要顯式連接建設,等待連接調用。(默認值: False)
db – 連接數據庫別名(兼容MySQLdb)
passwd – 密碼輸入別名(兼容MySQLdb)
binary_prefix – 在bytes和bytearray上添加_binary前綴(默認: False)

可以根據上述的參數來設置mysql連接,接下來准備sql語句

select  * from table

數據庫連接成功,且sql也准備好之后,開始執行在數據庫中執行sql語句 以達到我們的查詢目的

pymysql是利用游標來執行sql語句的,游標就相當於是一輛貨車,把程序中的sql語句運送到數據庫中執行,所以要先叫一輛貨車,即創建游標cursor 

cursor = connection.cursor()

然后往貨車上搬貨物,讓游標帶上sql 執行語句

cursor.execute("sql語句")

返回的是執行語句后獲得的表長度

當執行完sql語句后,現在這輛貨車(游標cursor)已經滿載貨物(數據)了,怎么取貨呢?

想從貨車(游標cursor)上取一件貨物看看

dataOne = cursor.fetchone()

fetchone()是取下一行的意思,還有

dataMany = cursor.fetchmany()

  dataMany = cursor.fetchmany(5)

dataAll = cursor.fetchall()
.fetchmany() 是取幾行,可以帶參數,准確取出幾行 .fetchall()是取全部數據
取完數據記得把數據庫大門關了
connection.close()  #關閉數據庫連接

 利用 pymysql連接數據庫,讀取表內容的功能已實現。

 

關於提交到數據庫操作

connection.commit

只有在插入、更新、刪除數據庫表時,才需要將sql語句提交到數據庫中操作,這時,只需要在sql語句執行(cursor.execute("sql語句"))后,添加上面這句“提交到數據庫操作”,即可。



 


免責聲明!

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



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