# 這里主要是記錄連接mysql數據庫的配置參數傳參以及簡單的查詢方法
import pymysql
class ReadSql(object):
"""操作MySql數據庫的類"""
def __init__(self):
# 建立連接
self.connect = pymysql.connect(host = mysql['mysql']['host'], # 數據庫地址
port = mysql['mysql']['port'], # 端口
user = mysql['mysql']['user'], # 登錄用戶名
password = mysql['mysql']['password'], # 登錄密碼
database = mysql['mysql']['database'], # 選擇連接到的數據庫
use_unicode = mysql['mysql']['use_unicode'], # 編碼格式:設置為True
charset = mysql['mysql']['charset']) # 編碼格式:UTF8
# use_unicode 和 chaeset 需要進行設置,才能使查詢出的中文數據不會出現亂碼
# 創建游標
self.cur = self.connect.cursor() # 對數據庫的操作是通過游標來進行操作的
def find_one(self, sql):
"""
查詢一條語句
:param sql: SQL語句
:return: 查詢結果
"""
self.connect.commit() # 先同步數據庫中數據的最新狀態(因為如果不加commit的話,在數據庫更新數據以后,查詢到的還會是原來的數據。具體下面講解)
self.cur.execute(sql)
return self.cur.fetchone() # 通過游標來進行數據庫操作,這里的fetchone是pymysql庫中的一個查詢方法
def close(self):
"""
關閉連接mysql游標,斷開數據庫鏈接的方法
:return:
"""
self.cur.close() # 先關閉游標
self.connect.close() # 然后斷開數據庫鏈接
if __name__ == '__main__':
mysql_01 = ReadSql().find_one(sql="XXXXXXXXXXXXXXXXXXXXXXXXXXXXX;") # 這里的查詢語句和cx_Oracle連接Oracle數據庫查詢語句有點區別,就是這里的語句可以不加;號
print(mysql_01)
# 為什么每次查詢之前需要commit()一下呢?
這里可以簡單的理解,當pymysql連接到數據庫以后,在連接完成之后,就好像是將數據庫中的數據拍照了,數據是死的了。每次讀取數據都會從這張照片里面查找,即使數據有更新,查詢到的依舊是照片上的數據。所以commit()就相當於是同步數據庫中的數據。
# 連接數據庫的配置信息我是存儲在 Yaml 配置文件中的,所以是通過讀取存儲在Yaml文件中的數據庫相關配置來進行傳參的。
查詢結果:
