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

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 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=ORACLEHOME: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数据库,如需转载请自行联系原博主。
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
5351
分享
相关文章
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
MySQL进阶突击系列(07) 她气鼓鼓递来一条SQL | 怎么看执行计划、SQL怎么优化?
在日常研发工作当中,系统性能优化,从大的方面来看主要涉及基础平台优化、业务系统性能优化、数据库优化。面对数据库优化,除了DBA在集群性能、服务器调优需要投入精力,我们研发需要负责业务SQL执行优化。当业务数据量达到一定规模后,SQL执行效率可能就会出现瓶颈,影响系统业务响应。掌握如何判断SQL执行慢、以及如何分析SQL执行计划、优化SQL的技能,在工作中解决SQL性能问题显得非常关键。
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
87 12
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
MySQL原理简介—1.SQL的执行流程
本文介绍了MySQL驱动、数据库连接池及SQL执行流程的关键组件和作用。主要内容包括:MySQL驱动用于建立Java系统与数据库的网络连接;数据库连接池提高多线程并发访问效率;MySQL中的连接池维护多个数据库连接并进行权限验证;网络连接由线程处理,监听请求并读取数据;SQL接口负责执行SQL语句;查询解析器将SQL语句解析为可执行逻辑;查询优化器选择最优查询路径;存储引擎接口负责实际的数据操作;执行器根据优化后的执行计划调用存储引擎接口完成SQL语句的执行。整个流程确保了高效、安全地处理SQL请求。
253 76
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
【赵渝强老师】Oracle数据库的闪回表
本文介绍了Oracle数据库中的闪回表(Flashback Table)功能,它能够将表的数据快速恢复到特定时间点或系统改变号(SCN),无需备份。文章通过实战示例详细演示了如何使用闪回表恢复数据,包括授权、创建测试表、记录时间与SCN号、删除数据、启用行移动功能、执行闪回操作以及验证恢复结果等步骤。同时,还展示了如何通过触发器禁止插入操作,并在闪回过程中处理触发器的启用问题。文末附有视频讲解,帮助读者更好地理解闪回表的使用方法。
47 10
【赵渝强老师】Oracle数据库的闪回查询
本文介绍了Oracle数据库的闪回查询(Flashback Query)功能及其实际应用。闪回查询通过`AS OF`子句,结合时间戳或SCN号,可查询历史数据状态,帮助分析数据差异。文中通过具体示例演示了如何使用闪回查询:创建测试表、记录当前SCN号、更新数据并提交事务,最后通过闪回查询获取历史数据。附带的视频和代码块详细展示了操作步骤与结果。
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】如何将mysql含有group by的SQL转换成崖山支持的SQL
本文探讨了在YashanDB(崖山数据库)中执行某些SQL语句时出现的报错问题,对比了MySQL的成功执行结果。问题源于SQL-92标准对非聚合列的严格限制,要求这些列必须出现在GROUP BY子句中,而SQL:1999及更高版本允许非聚合列直接出现在选择列中。YashanDB和Oracle遵循SQL-92标准,因此会报错。文章提供了两种解决方法:使用聚合函数处理非聚合列,或将GROUP BY与ORDER BY拆分为两层查询。最后总结指出,SQL-92标准更为严谨合理,建议开发者遵循此规范以避免潜在问题。
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
66 9

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等