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

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

unixODBC

FreeTDS

pyodbc

cx_Oracle

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

作者:张正

QQ:176036317

如有疑问,欢迎联系。

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

一、前提概述...

二、驱动安装...

1. unixODBC安装...

2. FreeTds安装...

3. pyodbc安装...

4. cx_Oracle安装...

三、驱动配置...

四、连接测试...

一、前提概述

pyodbc是一个Python模块,能够让python使用 ODBC 连接来自Windows, Linux, OS/X等系统中的大部分数据库。pyodbc依赖于unixODBC和FreeTDS,因此需要先安装unixODBC和FreeTDS。(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

3. pyodbc安装

下载pyodbc-3.0.6.zip

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_oracle:cx_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_oracle:cx_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连接测试:

3.Oracle连接测试:

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版:pythonsjkqdaz

linux python连接oracle数据库_Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法...相关推荐

  1. 数据库应用程序开发基础篇—— .NET中SQL Server数据库的操作C#篇之一

    数据库应用程序开发基础篇-- .NET中SQL Server数据库的操作C#篇之一 写在前面:前面介绍了数据库系统的基本概念,SQl语句基本使用方法,接下来通过学习具体语言和具体数据库结合的应用开发来 ...

  2. 访问局域网内SQL Server数据库方法

    软件环境:Windows 7; SQLServer 2005; 1       检查局域网连接 ping  <服务器IP地址> 或 ping  <服务器名称>,如ping10. ...

  3. SQL Server无法删除数据库 xxx,因为该数据库当前正在使用(如何删除一个Sql Server数据库)

    1.一般情况下删除一个Sql Server数据库: 新建查询→输入"drop database xxx(xxx为数据库名)"→执行. 但有时会报错:无法删除数据库 "li ...

  4. python获取终端输出流_Linux下用Python获取命令行输出的几个方案

    Python在慢慢成为脑影像数据处理中的主流语言.而在做脑影像处理时,不免有时候需要用到一些别人开发好的工具包,而这些包并不都是python包.下面是学习啦小编收集整理的Linux下用Python获取 ...

  5. Java web连接数据库实现登录功能 ; jsp连接MySQL或SQL server数据库的jar包也在这里哦!

    [深夜放毒,记录生活^_^]   学了HTML之后 , 一直想写一个能够实现登录功能的小网页 ,终于--现在开始学习数据库,经过查阅资料,创建了很简单的一个java web小项目来实现登陆操作,界面不 ...

  6. C# Web.config连接MySQL、SQL Server数据库配置

    1.MySQL <connectionStrings><add name="db" connectionString="Server=ip地址;Data ...

  7. vb 访问远程计算机,vb 怎么访问远程电脑SQL SERVER数据库

    一.如果可以直接操作服务器检查步骤如下: 1.确定数据库服务器的服务正常开启. 2.确定数据库的链接数没有满.测试这个,可以在服务器上用查询命令. 1).用SQL语句:select count(*) ...

  8. .mdf数据库恢复mysql_从 mdf ldf 文件恢复sql server 数据库

    欢迎进入Windows社区论坛,与300万技术人员互动交流 >>进入 1: 无需新建数据库,直接运行 USE master; GO CREATE DATABASE test ON (FIL ...

  9. linux恢复mysql数据库_linux下如何备份还原mysql数据库

    本文介绍了linux下如何备份与恢复mysql数据库. 数据库备份是非常重要的.如果定期做好备份,这样就可以在发生系统崩溃时恢复数据到最后一次正常的状态,把损失减小到最少. 一. 用命令实现备份 My ...

最新文章

  1. 一个简单 JDK 动态代理的实例
  2. 计算机是怎样跑起来的
  3. dart语言中的常量与变量
  4. log 日志 php tp5,TP5自定义日志记录到文件方法
  5. 宏正ATEN推出ALTUSEN系列 全面冲刺KVM高端市场
  6. dsoframer java_dsoframer介绍
  7. 单片机c语言双电源程序,基于单片机的双电源自动切换开关控制器
  8. odb对象关系映射系统
  9. matlab应用书pdf下载,MATLAB及Mathematica软件应用 pdf epub mobi txt 下载
  10. java -ex_exJava
  11. 病毒茶几 U盘里的恶魔——Autorun病毒
  12. computed vue 不 触发_vue computed 无法触发 set
  13. 51nod-【1278 相离的圆】
  14. java 导出excel带多种颜色
  15. arp攻击实验(一)用一条指令让对方瞬间无法上网
  16. 算法:Bloom Filter
  17. 用正则表达式将文字转换成表情图片
  18. python中description_python中cursor.description什么意思
  19. Codeforces - Pencils and Boxes
  20. vue-quill-editor:富文本编辑器使用

热门文章

  1. 【福利解锁Part1】报名参与腾讯云专场活动,第一波干货内容免费放送
  2. 【线上分享】华为云视频Cloud Native架构及工程实践
  3. Linux 入门必看:如何60秒内分析Linux性能
  4. 超多干货!支撑起腾讯公司计费业务的TDSQL(附PPT)
  5. 解密HLS中的AES加密
  6. Shell脚本中字符串的一些常用操作
  7. 目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
  8. 年轻——塞缪尔.厄尔曼
  9. 无招胜有招之Java进阶JVM(八)类加载机制
  10. java小编程----四数之和