ホームページ  >  記事  >  バックエンド開発  >  cx_Oracleモジュールを使ってOracleデータベースを操作するPythonの詳細説明

cx_Oracleモジュールを使ってOracleデータベースを操作するPythonの詳細説明

不言
不言オリジナル
2018-05-07 11:47:556200ブラウズ

この記事では主に、Oracle データベースを操作するための Python による cx_Oracle モジュールの使用方法と、cx_Oracle モジュールのダウンロードとインストール、Oracle データベースへの接続、SQL ステートメントの実行、ストアド プロシージャ、およびその他の関連操作テクニックを詳細に分析します。例の形式は必須です。友人はこの記事を参照してください

この記事の例では、Python が cx_Oracle モジュールを使用して Oracle データベースを操作する方法について説明します。参考のために全員と共有してください:

ORACLE_SID パラメータ。このパラメータは、マシン上に複数のインスタンスがある場合に、デフォルトで接続するデータベース インスタンスを記述します。ここではデフォルトのインスタンス名が使用されているため、これを変更する必要があります。

要するに、例えばあなたの名前はシャオミンですが、あなたにはたくさんのあだ名があります。あなたの両親はあなたのことをシャオミンと呼んでいますが、友達は皆あなたのことをあだ名で呼んでいます。

ここで、あなたの両親は Oracle インスタンス、Xiao Ming は SID、サービス名はあなたのニックネームです。

sidは各データベースとインスタンスを区別するために使用され、サービス名は外部リンクに使用されます。 異なる場合があるため、取得した名前に注意して適切に使用してください。そうしないと、他のデータベースにリモートで接続するときにエラーが発生する可能性があります。

はじめに

Python には、ファイルを操作するためのモジュールが多数付属しています。ファイルからデータを読み取り、処理後にデータをファイルに書き込むことができます。しかし、データの管理と分析に関しては、データベースの方がまだ専門的です。 Python をデータベースと組み合わせることができれば、両方の利点を組み合わせて効率を向上させることができます。

私は仕事で Oracle データベースを使用していますが、Python には Oracle に接続できるモジュール cx_Oracle があります。 cx_Oracle を使用するには、まず cx_Oracle をダウンロードする必要があります。

1. モジュールが豊富に揃っている公式サイト PyPI である cx_Oracle

Python をダウンロードします。 cx_Oracle は PyPI からダウンロードできます。 PyPI URL https://pypi.python.org/pypi を開き、cx_Oracle を検索してモジュールを見つけます。ダウンロード アドレスは http://cx-oracle.sourceforge.net/ です。もちろん、他の方法でダウンロードすることもできます。

ダウンロード後ご利用いただけます。

2. 使用プロセス

簡単な使用プロセスは次のとおりです:

①. データベースに接続します

③. カーソルを使用してさまざまな操作を実行します
⑤. カーソルを閉じます
⑥. 接続を閉じます

簡単な例を示します:

cx_Oracle.connect("Username/Password@Oracle Server IP/Oracle の SERVICE_NAME")

Oracle の SERVICE_NAME:

su - oracle #Oracle ユーザーに切り替えます

env | grep ORACLE #Query ORACLE 環境変数

ORACLE_SID=benguo # benguo は SERVICE_NAME です

import cx_Oracle                     #引用模块cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g')  #连接数据库
c=conn.cursor()                      #获取cursor
x=c.execute('select sysdate from dual')          #使用cursor进行各种操作
x.fetchone()
c.close()                         #关闭cursor
conn.close()                       #关闭连接

例:

りー

3いくつかの使用法

データベースに対する Python の操作には主に 2 つの側面が含まれます: 1 つはデータの書き込みで、もう 1 つはデータの読み取りです。これら 2 つの側面の実装は、SQL ステートメントまたはストアド プロシージャを通じて実現できます。 cx_Oracle の主な用途は、

① SQL ステートメントの実行

② です。

4. SQL ステートメントを実行する

上記の例からわかるように、SQL ステートメントの実行は非常に簡単です。 cursor.execute を使用して実行します。実行結果を読み出すには、fetchone または fetchall を使用します。

次の例は、変数バインディングを使用した Insert ステートメントです。

cursor.execute即可执行。使用fetchone或fetchall即可将执行结果读出来。

下面一个例子是Insert语句,使用的变量绑定。

#coding:utf-8
import cx_Oracle
def main():
  conn = cx_Oracle.connect("zebra/zebra@192.168.0.113/benguo")
  cur =conn.cursor()
  r= cur.execute("select * from userinfo")
  print
  print r.fetchone()
if __name__ == '__main__':
  main()

变量绑定和Oracle的动态SQL一样,都是冒号将占位符,即代码中的:1,对变量的复制就是传入一个List,即代码中的['nice']。有多少个变量,list中就应该对应多少个值,数目要一致,否则会报错。

执行之后,可以使用连接的一个方法connect.commit(),将事务提交。

5. 调用存储过程和方法

直接上代码:

import cx_Oracle
conn=cx_Oracle.connect('load/123456@loaclhost/ora11g')
c=conn.cursor()
x=c.execute('insert into demo(v) values(:1)',['nice'])
conn.commit();
c.close()
conn.close()

--存储过程代码:
CREATE OR REPLACE PROCEDURE P_DEMO(V1 IN VARCHAR2, V2 OUT VARCHAR2) IS
BEGIN
  V2 := V1;
END;

调用存储过程使用的是cursor.callproc方法。上面的存储过程中,一个变量的值是OUT型的,在Python中,对OUT型的变量赋值,主要该变量的长度不能小于存储过程中的。

#Python代码:
import cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g')
c=conn.cursor()
str1='nice'
str2='  '#需要有值,即len(str2)>=len(str1)
x=c.callproc('p_demo',[str1,str2])
print(str2)
c.close()
conn.close()

--函数代码:
CREATE OR REPLACE function F_DEMO(V1 VARCHAR2) RETURN VARCHAR2 IS
BEGIN
  RETURN V1;
END;

调用函数使用的方法是cursor.callfunc

#Python代码:
import cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g')
c=conn.cursor()
str1='nice'
str2=c.callfunc('f_demo',cx_Oracle.STRING,[str1])
print(str2)
c.close()
conn.close()

変数バインディングは Oracle の動的 SQL と同じです。 コロンはプレースホルダーです。コードでは 1 変数のコピーがリストに渡されます。これは ['nice' です。コード。 ]。変数はいくつあり、リストに対応する値はいくつありますか。数値は一貫していなければなりません。そうでない場合はエラーが報告されます。 実行後、接続メソッド connect.commit() のいずれかを使用してトランザクションをコミットできます。

5. ストアド プロシージャとメソッドを呼び出す

コードに直接移動します:

🎜🎜rrreee🎜🎜🎜🎜rrreee🎜🎜🎜 cursor.callproc メソッドを使用してストアド プロシージャを呼び出します。上記のストアド プロシージャでは、変数の値は OUT 型です。Python では、OUT 型の変数に値を代入する場合、変数の長さをストアド プロシージャの値より小さくすることはできません。 🎜🎜🎜rrreee🎜🎜🎜🎜rrreee🎜🎜🎜 関数の呼び出しに使用されるメソッドは cursor.callfunc です。これとストアド プロシージャの呼び出しの違いは、送信パラメータの種類を指定する必要があることです。 🎜🎜🎜🎜終了🎜🎜🎜🎜 cx_Oracle を介して、Python と Oracle データベースは相互に通信できるため、両者の長所を補完できます。 🎜🎜たとえば、Python をデータ収集ツールとして使用すると、Web およびファイルからデータを取得し、Oracle データベース上のデータをさらに分析するためにそのデータを Oracle データベースに保存できます。 🎜🎜関連するおすすめ: 🎜

Pythonはopenpyxlライブラリを使用してExcelテーブルデータメソッドを変更します

Pythonは電子メールモジュールを使用して電子メールをエンコードおよびデコードします

以上がcx_Oracleモジュールを使ってOracleデータベースを操作するPythonの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。