Linuxでpythonを通じてMySQL、Oracle、SQL Serverデータベースにアクセスする方法


この文書は主にLinuxのpythonデータベースドライバのインストールと構成を説明し、Linuxプラットフォームの下でpythonを通じてMySQL、Oracle、SQL Serverデータベースにアクセスすることを実現します。
以下のいくつかのソフトウェアのインストールと構成が含まれています。
unixODBC
フリーTDS
pyodbc
cx_Oracle
転載を歓迎します。作者、出所を明記してください。
作者:张正
QQ:17636
ご質問があれば、ご連絡ください。       
この文書は主にLinuxのpythonデータベースドライバのインストールと構成を説明し、Linuxプラットフォームの下でpythonを通じてMySQL、Oracle、SQL Serverデータベースにアクセスすることを実現します。
一、前提概説…
二、駆動取付…
1.unixODBC実装…
2.FreeTds取付…
3.pyodbc取付…
4.cx_Oracleインストール…
三、駆動配置…
四、接続テスト…
一、前提概説
pyodbcはPythonモジュールで、Windows、Linux、OS/XなどのシステムのほとんどのデータベースにODBCを使って接続することができます。pyodbcはunixODBCとFreeTDSに依存していますので、まずunixODBCとFreeTDSをインストールする必要があります。FreeTDSは、LinuxシステムでSQL ServerデータベースにアクセスできるオープンソースCライブラリです。
cx_OracleはOracleデータベースを接続して操作するためのPython拡張モジュールで、Oracle 9.2 10.2および11.1などのバージョンをサポートしています。
二、駆動取付
1.unixODBC取付
         a.unixODBCインストールパッケージをダウンロードする:unixODBC-23.22.tar.gz
         ダウンロード住所:http://www.linuxfromscratch.org/blfs/view/cvs/general/unixodbc.html
         b.ストレス解消:tar-zxf unixODBC-23.22.tar.gz
         c.据え付け:cd unixODBC-23.3.2
         ./configure--enabole-gui=no
         メーク
         make install
         NOTES:
         3つのステップをコンパイルしてインストールします。echoで$終了状態を表示します。0なら正常です。次の操作が可能です。MYSQLドライバは、MySQL-python.x 86_をインストールできます。64)
 
2.FreeTds取付
         FreeTdsのインストールパッケージをダウンロードします。freetds-stable.tgz
         ダウンロード住所:http://www.freetds.org/
         tar-zxvf freetds-stable.tgz
         cd freetds-00.91
./configure--prefix=/etc/freetds--with-tdsver=7.0--enaber-msdblib--with-gnu-ld  --enaber-sharred--enabel-static
         メーク
         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.6.zipをダウンロードします。
ダウンロード住所:https://www.jb51.net/softs/453989.html
unzip pyodbc-3.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.17を再ダウンロードしてインストールすればいいです。
 
4.cx_Oracleインストール
4.1.ダウンロード:cx_oracle:cx_Oracle-51.20 g-py 27-1.x 86_64.rpm
http://sourceforge.net/projects/cx-oracle/files/
NOTES:
対応バージョンのドライバをダウンロードする必要があります。
 
4.2  oracle instant clientインストール:
gunzip 10210_clientlinux.x 86_64. cpio.gz
cpio-idmvclientlinux.x 86_64. cpio
にあります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
ロトユーザに戻る:
mv client/home/oracle/
[root@localhostソフトワール]((芰chown-R oracle):dba/home/oracle/client)
 
ス-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.com nf
text size=10240000
client charset=UTF-8
 
2.freetdsドライバの配置:
vi freetds.ini
[Free TDS]
Description     = 0.91 with protocol v 7.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
ポート    =1433
Database=マスター
ハここでSQL Serverデータを配置する接続情報が必要です。
 
odbcinst-i-s-f db.ini
 
cat/root/.odbc.ini
[SQLSERVER]
Driver=FreeTDS
Description=SQLSERVER
Trace=No
Server=192.168.16.13
ポート=1433
Database=マスター
 
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_10 g/lib/libclntsh.so.0.1/usr/lib 64/libclntsh.so.0.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/[email protected]: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 ' '")
最後に完全なワード版を添付します。pythons jkqdaz(jb 51.net)