其實在我們編碼過程中,不管是爬蟲還是服務端還是做數據分析的業務場景,都需要對數據庫進行一些數據管理操作,那怎么連庫呢?
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

其實數據庫還是很好玩的,有問題在更新,最近是因為網絡上面很多都無效,特地自己整理了一份,也作為自己的一個筆記,加油。
