前言
目前使用了python去连接过一部分数据库,在这里做个总结,在这里简单表述下,说的不清楚的或不对的地方请各位帮忙指正。
连接MySQL
先使用pip install pymysql安装第三方库(后面的也是一样),导入模块,填写数据库配置信息。
import pymysql
conn = pymysql.connect(host='IP地址', port=3306, user='用户名', password='密码',database='数据库名', charset='字符集')
cursor = conn.cursor()
sql=" select now()"
cursor.execute(sql)
通过ssh连接MySQL
在我们通过ssh远程连接数据库时,包括我们使用navicat、pl/sql等工具同样时要配置ssh的,在python中需要导入SSHTunnelForwarder模块,通过本地端口ssh到跳板机,再通过跳板机来连接远程数据库。
import pymysql
from sshtunnel import SSHTunnelForwarder
server = SSHTunnelForwarder(ssh_address_or_host=('20.0.0.1', 22), # 指定SSH中间登录地址和端口号
ssh_username='root', # 指定地址B的SSH登录用户名
ssh_password='123', # 指定地址B的SSH登录密码
local_bind_address=('127.0.0.1',8080), # 绑定本地地址A(默认127.0.0.1)及与B相通的端口(根据网络策略配置,若端口全放,则此行无需配置,使用默认即可)
remote_bind_address=('10.0.0.1', 3306) # 指定最终目标C地址,端口号为mysql默认端口号3306
)
server.start()
#conn中的user和password是目标地址c的用户名和密码
conn = pymysql.connect(host="127.0.0.1", port=server.local_bind_port, user="test", password="123", database=test, charset="utf8mb4")
连接oracle
orcle的连接大同小异,使用下面两种方法都可以实现。
import cx_Oracle as cx
conn = cx.connect('用户名','密码', 'IP地址:1521/orcl')
##conn = cx.connect('用户名/密码@IP地址:1521/orcl')
通过ssh连接oracle
同样我们使用上面mysql连接ssh的方法,把对应的信息改成oracle数据库的信息即可。
import cx_Oracle as cx
from sshtunnel import SSHTunnelForwarder
server = SSHTunnelForwarder(ssh_address_or_host=('20.0.0.1', 22), # 指定SSH中间登录地址和端口号
ssh_username='root', # 指定地址B的SSH登录用户名
ssh_password='123', # 指定地址B的SSH登录密码
local_bind_address=('127.0.0.1',8080), # 绑定本地地址A(默认127.0.0.1)及与B相通的端口(根据网络策略配置,若端口全放,则此行无需配置,使用默认即可)
remote_bind_address=('10.0.0.1',1521) # 指定最终目标C地址,端口号为mysql默认端口号3306
)
server.start()
#conn中的user和password是目标地址c的用户名和密码
conn = cx.connect('test', '123','127.0.0.1:8080/orcl')
连接mongodb
使用地址和端口号就可以连接。
import pymongo
#建立数据库连接,指定ip和端口号
client = pymongo.MongoClient("127.0.0.1",27017)
#指定数据库
test = client.test
#指定数据库集合
collection= test.te
连接redis
使用连接池连接,在创建多个数据库连接时可将连接保存在连接池中,需要访问数据库时直接进行连接无需创建新的连接。
pool = redis.ConnectionPool(host='127.0.0.1',password='') #实现一个连接池,没有密码时不填
r = redis.Redis(connection_pool=pool)
r.set('name','帅哥')
print(r.get('name').decode('utf8'))