Linux下通过python访问MySQL、Oracle、SQL Server数据库

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介:

本文档主要描述了Linux下python数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQL、Oracle、SQL Server数据库。

其中包括以下几个软件的安装及配置:
unixODBC
FreeTDS
pyodbc
cx_Oracle


欢迎转载,请注明作者、出处。

作者:张正
blog:http://space.itpub.net/26355921 
QQ:176036317
如有疑问,欢迎联系。

        

Python数据库驱动安装配置

Linux下通过python访问MySQLOracleSQL Server

2014/7/25

 

 


本文档主要描述了Linuxpython数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQLOracleSQL Server数据库。

 


一、前提概述... 

二、驱动安装...

1. unixODBC安装... 

2. FreeTds安装... 

3. pyodbc安装...

4. cx_Oracle安装... 

三、驱动配置... 

四、连接测试... 

一、前提概述

pyodbc是一个Python模块,能够让python使用 ODBC 连接来自Windows, Linux, OS/X等系统中的大部分数据库。pyodbc依赖于unixODBCFreeTDS,因此需要先安装unixODBCFreeTDS。(FreeTDS是一个开源的C程序库,它可以实现在Linux系统下访问操作SQL Server数据库)

cx_Oracle 是一个用来连接并操作 Oracle 数据库的 Python 扩展模块, 支持包括 Oracle 9.2 10.2 以及 11.1 等版本。

二、驱动安装

1. unixODBC安装

         a.下载unixODBC安装包:unixODBC-2.3.2.tar.gz

         下载地址:http://www.linuxfromscratch.org/blfs/view/cvs/general/unixodbc.html

         b.解压:tar -zxf unixODBC-2.3.2.tar.gz

         c.安装:cd unixODBC-2.3.2

         ./configure --enable-gui=no

         make

         make install

         NOTES

         编译安装三个步骤之间,可通过echo $?查看退出状态,为0则正常,可进行下一步操作。(MYSQL驱动可安装MySQL-python.x86_64)

2. FreeTds安装

         下载FreeTds安装包:freetds-stable.tgz

         下载地址:http://www.freetds.org/

         tar -zxvf freetds-stable.tgz

         cd freetds-0.91

./configure --prefix=/etc/freetds --with-tdsver=7.0 --enable-msdblib --with-gnu-ld  --enable-shared --enable-static

         make

         make install

         同样可通过echo $?查看退出状态,安装完后可查看freeTds相关版本及安装信息:

         cd src/apps/

         ./tsql -C

[root@localhost apps]# ./tsql -C 

Compile-time settings (established with the "configure" script)

                            Version: freetds v0.91

             freetds.conf directory: /usr/local/etc

     MS db-lib source compatibility: no

        Sybase binary compatibility: no

                      Thread safety: yes

                      iconv library: yes

                        TDS version: 7.1

                              iODBC: no

                           unixodbc: yes

              SSPI "trusted" logins: no

                           Kerberos: no

3. pyodbc安装

         下载pyodbc-3.0.6.zip

         下载地址:http://www.oschina.net/p/pyodbc

         unzip pyodbc-3.0.6.zip

         cd pyodbc-3.0.6

         python setup.py build

         python setup.py install

         NOTES:安装时build 遇到以下错误,而且gcc相关包已经安装完全

/root/software/pyodbc-3.0.6/src/connection.h:27: error: ‘uintptr_t’ does not name a type

error: command 'gcc' failed with exit status 1

         查看python版本,发现其为python 2.4,通过官网下载页面信息对比,可知pyodbc-3.0.6不支持python 2.4,重新下载pyodbc-2.1.7安装即可。

4. cx_Oracle安装

4.1. 下载:cx_oraclecx_Oracle-5.1.2-10g-py27-1.x86_64.rpm

http://sourceforge.net/projects/cx-oracle/files/

NOTES

需要下载对应版本的驱动

 

4.2  oracle instant client 安装:

gunzip 10201_client_linux_x86_64.cpio.gz

cpio -idmv < 10201_client_linux_x86_64.cpio

~/.bash_profile中添加oracle相关配置:

export ORACLE_BASE=/opt/oracle

export ORACLE_HOME=$ORACLE_BASE/client_10g

export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH

建立oracle用户和文件目录

groupadd dba

useradd -g dba oracle

su - oracle

mkdir -p /opt/oracle/client_10g

配置.bash_profile

回到root用户:

mv client /home/oracle/

[root@localhost software]# chown -R oracle:dba /home/oracle/client

 

su - oracle 进行安装:

cd /home/oracle/client/response

vi instantClient.rsp

修改以下参数:

UNIX_GROUP_NAME=dba

ORACLE_HOME=/opt/oracle/client_10g

ORACLE_HOME_NAME=OraClient10ghome1

cd ../

./runInstaller -silent -noconfig -responseFile /home/oracle/client/response/instantClient.rsp

python setup.py build

python setup.py install

 

         4.3 安装cx_Oracle

         rpm -ivh cx_oraclecx_Oracle-5.1.2-10g-py27-1.x86_64.rpm

三、驱动配置

 1. 配置freetds

vi /etc/freetds/etc/freetds.conf

text size = 10240000

client charset = UTF-8

 

2. 配置freetds驱动:

vi freetds.ini

[FreeTDS]

Description     = 0.91 with protocol v7.0

Driver          = /etc/freetds/lib/libtdsodbc.so

 

odbcinst -i -d -f freetds.ini

 

3. 配置数据源:

vi db.ini

[SQLSERVER]

Driver = FreeTDS

Description = SQLSERVER

Trace   =No

Server  =192.168.16.13

Port    =1433

Database=master

#此处需要配置SQL Server数据的连接信息

 

odbcinst -i -s -f db.ini

 

cat /root/.odbc.ini

[SQLSERVER]

Driver=FreeTDS

Description=SQLSERVER

Trace=No

Server=192.168.16.13

Port=1433

Database=master

 

NOTES

若见到以下错误:

import cx_Oracle

Traceback (most recent call last):

  File " ", line 1, in ?

ImportError: libclntsh.so.10.1: cannot open shared object file: No such file or directory

 

则需要找到对应的文件建立软链接,如:

ln -s /opt/oracle/db_10g/lib/libclntsh.so.10.1 /usr/lib64/libclntsh.so.10.1

四、连接测试

1. 前提说明:

         本处提供的连接测试,仅仅是一个简单的连通并发起查询,以证明驱动的正确安装配置

         可先进行import 查看驱动安装是否有误:

[root@localhost etc]# python

Python 2.4.3 (#1, Apr 14 2011, 20:41:59)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import MySQLdb #测试MySQL

>>> import cx_Oracle #测试Oracle

>>> import pyodbc   #测试pyodbc,可访问SQL Server

>>>

         若驱动正确安装,执行import操作就不会报错。

 

2. MySQL连接测试:

[root@localhost software]# cat mysql_test.py

import MySQLdb

sql='show databases';

conn=MySQLdb.connect(host='localhost',user='test',passwd='test',db='test',port=3306)

cur=conn.cursor()

cur.execute(sql)

print cur.fetchone()

 

[root@localhost software]# python mysql_test.py

('information_schema',)

 

3.Oracle连接测试:

[root@localhost software]# cat test.py

import time

import cx_Oracle

sql2="select * from tab";

connstr="system/oracle@192.168.43.130:1521/orcl"

conn=cx_Oracle.connect(connstr)

cur=conn.cursor()

aa=cur.execute(sql2)

print cur.fetchone()

print cur.rowcount

print "connection string is   : ",conn.dsn

print "the database version is: ",conn.version

 

[root@localhost software]# python test.py

('SYSCATALOG', 'SYNONYM', None)

1

connection string is   :  192.168.43.130:1521/orcl

the database version is:  10.2.0.1.0

 

4.SQL Server连接测试

[root@localhost software]# cat test_sqlserver.py

import pyodbc

dd=sqlserver('DRIVER=FreeTDS;SERVER=192.168.16.13;PORT=1433;DATABASE=master;UID=dba_test_tmp;PWD=nimeia;TDS_Version=8.0;',"select getdate() as '时间'")

 


最后附上完整的word版:
python数据库驱动安装配置.docx

本文转自ITPUB博客84223932的博客,原文链接:Linux下通过python访问MySQL、Oracle、SQL Server数据库,如需转载请自行联系原博主。
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
Oracle Cloud Native 关系型数据库
Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
61 10
Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
|
11天前
|
SQL 运维 监控
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
|
1月前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
100 2
|
1月前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
|
2月前
|
存储 Oracle 关系型数据库
|
2月前
|
SQL Oracle 关系型数据库
Python连接Oracle
Python连接Oracle
22 0
|
4月前
|
Oracle 关系型数据库 数据库
Oracle数据库备份脚本分享-Python
Oracle数据库备份脚本分享-Python
114 0
|
4月前
|
SQL 监控 安全
在Linux中,如何检测和防止SQL注入和跨站脚本(XSS)攻击?
在Linux中,如何检测和防止SQL注入和跨站脚本(XSS)攻击?
|
12天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
81 15
|
6天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
下一篇
DataWorks