Python远程连接各类数据库
python远程连接orcale数据库
1、安装pyhton3.7 的依赖包
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
# 2、下载python3.7的“源码”:
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
# 3、解压并编译安装:
tar -xJvf Python-3.7.0.tar.xz
# 4、用cd命令进入解压出来的Python文件夹
cd Python-3.7.0
# 5、用./方法执行configure,并指定安装到usr目录下
./configure --prefix=/usr/local/python3 --enable-shared
# 6、开始编译安装
make && make install
# 7、配置环境变量, 创建软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 # 创建python3的软链接
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 # 创建pip的软链接
# 8、将编译目录下的libpython3.7m.so.1.0文件复制到
cp /root/Python-3.7.0/libpython3.7m.so.1.0 /usr/lib64/libpython3.7m.so.1.0
2.python操作PostgreSQL数据库
#1.安装python操作PostgreSQL对应的标准库psycopg2 pip install psycopg2
import psycopg2 #导入模块
# 1.创建服务器链接
conn = psycopg2.connect(database="mrdb", user="mrdbuser", password="mrdbuser", host="20.200.47.197", port="5432")
# 2.建立游标,获取数据
cur = conn.cursor()
# 3.执行sql语句
cur.execute("SELECT * from abs_deal")
rows = cur.fetchall() # 所有数据
for row in rows:
print(row)
# 关闭游标
cur.close()
# 关闭服务器
conn.close()
3.python连接远程数据库上的Oracle数据库
-
安装python操作Oracle对应的标准库cx-Oracle pip install cx-Oracle
-
安装instanctclient
如果本机没有安装Oracle数据库,又要通过Python访问远程服务器上的Oracle,那么需要在本机上安装instantclient。安装可以从Oracle官网获取安装包;安装地址为:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
-
将下载好的压缩文件解压的文件路径追加到PATH环境变量中
-
在解压缩的文件夹下创建一个命名为‘ tnsnames.ora ’的文件
在文件中写入以下内容,根据实际情况修改HOST、SERVICE_NAME内容
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 20.200.47.203)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mrdb)
)
) - 将解压的文件夹中的 oci.dll, oraocci12.dll,oraociei12.dll 所有以.dll结尾的文件拷贝到python安装目录下的lib/site-packages中
-
代码操作#1.安装python操作Oracle对应的标准库cx-Oracle pip install cx-Oracle
import cx_Oracle
# 1.连接数据库,下面括号里内容根据自己实际情况填写
#conn = cx_Oracle.connect('用户名/密码@IP:端口号/数据库名称')
conn = cx_Oracle.connect('mrmind/mrmind@20.200.47.203:1521/mrdb')
# 2.建立游标,获取数据
cur = conn.cursor()
# 3.执行sql语句
cur.execute("SELECT * from ABSPAYMENT")
rows = cur.fetchall() # 所有数据
for row in rows:
print(row)
# 关闭游标
cur.close()
# 关闭服务器
conn.close()