其實在我們編碼過程中,不管是爬蟲還是服務端還是做數據分析的業務場景,都需要對數據庫進行一些數據管理操作,那怎么連庫呢?
pymysql是python用來連數據庫比較常用的之一,接下來我們簡單介紹一下正常pymysql連接和利用ssh通道在借助pymysql連接的使用
首先直接連接的 那是非常簡單的 然后就連上了,可以利用conn創建一個cursor,就可以開始sql的增刪改查了,最后記得close哦
mysql_conf = { "host": '數據庫ip地址', "port": 數據庫連接端口, "user": '數據庫賬號', "password": '數據庫密碼', "db": '要連接的數據庫', "charset": "utf8", "cursorclass": pymysql.cursors.DictCursor } conn = pymysql.connect(**mysql_conf)
navicat大家都知道怎么連,直接把配置文件對應的數據復制進去就好
其實大家會好奇什么是通道呢,使用配置白名單,然后以上面的方式直接連不是也可以嗎?
只能說每個公司的運維人員總有一套自己的安全模式,有些公司除了加白,也有使用ssh通道連接的。
其實原來很簡單,就是通過ssh連接到服務器上面,在通過服務器連接到本地的mysql
這里需要安裝sshtunnel配合pymysql進行使用,以下為參考代碼,利用密碼登錄到服務器進行雲集群的連接,如果實在本地服務器上面就把remote_bind_address修改成local_bind_address,對應后面的內容填本地數據庫的配置即可,很簡單吧
def get_conn(ssh_conf,mysql_conf): ''' 利用ssh通道連接數據庫 :param ssh_conf: 服務器配置 :param mysql_conf: 數據庫配置 :return: ''' server = SSHTunnelForwarder( (ssh_conf["host"], ssh_conf["port"]), ssh_password=ssh_conf["ssh_password"], ssh_username=ssh_conf["ssh_username"], remote_bind_address=(mysql_conf["host"], mysql_conf["port"]) ) server.start() client = pymysql.connect(host='127.0.0.1', # 此處必須是是127.0.0.1 port=server.local_bind_port, user=mysql_conf["user"], passwd=mysql_conf["password"], db=mysql_conf["db"], charset="utf8")
以下說一下navicat如何連接
第一步將服務器的密碼填到ssh中
第二步到常規的地方配置數據的地址,如果是雲集群的就填數據庫的雲地址,如果是本地的填localhost或者127.0.0.1
其實數據庫還是很好玩的,有問題在更新,最近是因為網絡上面很多都無效,特地自己整理了一份,也作為自己的一個筆記,加油。