pymysql連線資料庫,讀取表內容
阿新 • • 發佈:2018-11-16
python中有MySQLdb、pymysql等資料庫模組,本文用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連線資料庫,讀取表內容的功能已實現。