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語句"))后,添加上面這句“提交到數據庫操作”,即可。