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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

本文档主要描述了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版:
fj.pngpython数据库驱动安装配置.docx

本文转自ITPUB博客84223932的博客,原文链接:Linux下通过python访问MySQL、Oracle、SQL Server数据库,如需转载请自行联系原博主。
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
35 2
|
2天前
|
SQL 存储 关系型数据库
数据库开发之mysql前言以及详细解析
数据库开发之mysql前言以及详细解析
10 0
|
6天前
|
SQL NoSQL 关系型数据库
初识MySQL数据库——“MySQL数据库”
初识MySQL数据库——“MySQL数据库”
|
7天前
|
存储 关系型数据库 MySQL
Linux | MySQL基础
Linux | MySQL基础
|
7天前
|
关系型数据库 MySQL Linux
Linux联网安装MySQL Server
Linux联网安装MySQL Server
20 0
|
9天前
|
关系型数据库 MySQL 数据库
数据库基础(mysql)
数据库基础(mysql)
|
9天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
34 3
|
10天前
|
存储 关系型数据库 MySQL
【后端面经】【数据库与MySQL】为什么MySQL用B+树而不用B树?-02
【4月更文挑战第11天】数据库索引使用规则:`AND`用`OR`不用,正用反不用,范围中断。索引带来空间和内存代价,包括额外磁盘空间、内存占用和数据修改时的维护成本。面试中可能涉及B+树、聚簇索引、覆盖索引等知识点。MySQL采用B+树,因其利于范围查询和内存效率。数据库不使用索引可能因`!=`、`LIKE`、字段区分度低、特殊表达式或全表扫描更快。索引与NULL值处理在不同数据库中有差异,MySQL允许NULL在索引中的使用。
16 3
|
数据库 SQL 数据安全/隐私保护
|
12天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10