Python + pymysql 連接Mysql數據庫


# 這里主要是記錄連接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文件中的數據庫相關配置來進行傳參的。



查詢結果:


免責聲明!

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



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