python3-IBM_DBモジュール - DB2データベース操作の

公式ドキュメント

  https://www.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/kc_gen/developing-gen1.html

モジュールのインストール

  ウィンドウズ

    使用PyCharmのインストール:ファイル - >設定 - >プロジェクト:XXX - >プロジェクト通訳

    

    Windowsの手動インストール

    1.抽出IBM_DB-2.0.7.ta​​r.gz ntx64_odbc_cli.zip clidriverディレクトリとIBM_DB-2.0.7へのディレクトリ

    ディレクトリ抽出する実行cmdの後2.   Pythonはsetup.py installを   

    3. 2.0.7 py3.5.egg IBM_DB%PYTHON_HOME%\ Libの\サイト・パッケージに最後に、clidriverディレクトリ - \の下に 

  Linuxの

    インストール使用してピップは、公式サイトに行く必要がドライバパッケージをダウンロードするので、私は手動インストールのために事前にダウンしていた、少し遅い感じています:

    Baiduのクラウドディスク:https://pan.baidu.com/s/1skGhqMD

    1.  タール ibm_db- -zxvf 2.07タール .gzを 

    2.  タール -zxvf linuxx64_odbc_cli。タール .gzを 

    3.  CDがibm_db- 2.07 

    4.  のpython3 インストール setup.pyを 

      インストールでは、一つのディレクトリにドライバパッケージをclidriverたい告げるプロンプトが存在します成功しています。

      /usr/local/lib/python3.5/site-packages/clidriver

      /usr/local/lib/python3.5/site-packages/ibm_db-2.0.7-py3.5-linux-x86_64.egg/clidriver

    5.  MV clidriver /は/ usr / local / lib /のpython3。5 ibm_db- /のsite-packages / 2.07 -py3。5 -linux-x86_64.egg / clidriver 

サンプルコード

インポートIBM_DB 

#の接続文字列を 
connStr = " DATABASE = MSJ; HOSTNAME = 13.13.13.123; PORT = 50000; PROTOCOL = TCPIP; UID =ユーザ名;パスワード= PWD; " 
コン = なし
 試み#は、データベースへの接続 
    (CONN = ibm_db.connect connStr、"" "" )例えば、ステートメントを挿入、削除、および更新文を交換するだけで必要に 
    = SQLを" tab_student値( '%S'が、 '%のS')に挿入"%(1、" ジェット" SQL文の実行 
    のstmt = CONN(ibm_db.exec_immediateを、
    SQL) #は、影響を受けた行数を取得します。
    =行ibm_db.num_rows(STMT)
 を除くEX AS例外:
     印刷(EX)
 最後に閉じるデータベース 
    ibm_db.close(CONN)
自動提出 - -insertを追加し、-DELETE、変更-UPDATEを削除

インポートIBM_DB 

#の接続文字列を 
connStr = " DATABASE = MSJ; HOSTNAME = 13.13.13.123; PORT = 50000; PROTOCOL = TCPIP; UID =ユーザ名;パスワード= PWD; " 
コン = なし
 試み#は、データベースへの接続 
    (CONN = ibm_db.connect connStr、「」「」#の近くには、自動的に提出
    ibm_db.autocommit(コネチカット州、ibm_db.SQL_AUTOCOMMIT_OFF)
    削除し、例えば、文を挿入するために、更新ステートメントは、交換するだけで済み 
    SQL = " (tab_student値に挿入『%S』を、 '%のS')"%(1、" ジェット" #は、SQL文を実行します
    = STMT ibm_db.exec_immediate(CONN、SQL)
    の影響を受けた行数を取得 
    行を= ibm_db.num_rows(STMT)
    トランザクションコミット
    ibm_db.commit(conn)を
 除き、例外EX AS:
    ロールバックトランザクション
    ibm_db.rollback(CONN)
 最後にデータベース接続クローズ 
    ibm_db.close(conn)を
マニュアル提出 - -insertにより、-DELETE、変更を削除-UPDATE

インポートIBM_DB 

#の接続文字列を 
connStr = " DATABASE = MSJ; HOSTNAME = 13.13.13.123; PORT = 50000; PROTOCOL = TCPIP; UID =ユーザ名;パスワード= PWD; " 
コン = なし
 試み#は、データベースへの接続 
    (CONN = ibm_db.connect connStr、「」「」------------------- ----------------文を実行するには2つの方法があります-------# 
    1、即時実行の仕方によってサポートされていない?プレースホルダを、唯一の文字列連結の形をとることができ、および文字列データ型は、単一引用符でなければなりません 
    SQL = " SELECT * FROM WHERE MOBILE = TAB_USER '%のS'; "" 13911111111 " 
    STMT =ibm_db.exec_immediate(CONN、SQL)
    結果 = ibm_db.fetch_both(STMT)    抽出結果の
    印刷(結果)

    2、プリコンパイルされた使用して、サポートしていますか?プレースホルダ 
    SQL = " SELECT * FROM TAB_USER MOBILE =?" 
    sql_args =(" 13911111111 " 、)
    のstmt = ibm_db.prepare(CONN、SQL)    プリコンパイル 
    ibm_db.execute(stmtは、sql_args)      実行 
    結果を= ibm_db.fetch_row(STMT)
     印刷(結果)
     ------- ------------結果を抽出するための4つの方法が-----------------------#あります
    1.最初のコールFETCH_ROW(STMT)、真の結果はそうでない場合は(STMT、col_idx)抽出結果ibm_db.resultを呼び出し、その後、falseを返す
    #1 ibm_db.fetch_row(STMT) 
    結果= ibm_db.result(STMT、0) 

    2。 (STMT)FETCH_BOTH呼び出し結果が辞書に戻され、値は[「MOBILE」]カラム名またはインデックス結果であるか、または生じ得る、行を抽出する[0] 
    結果= ibm_db.fetch_both(STMT) 

    3コールのFETCH_ASSOC(STMT )抽出ライン、辞書を返し、値は、結果に[「MOBILE」]定める
    #の結果= ibm_db.fetch_assoc(STMT) 

    4コールfetch_tuple(STMT)抽出ラインを、タプルを返します唯一の指標値結果が[0] 
    結果= ibm_db.fetch_tuple(STMT)

    #1 注:複数の行を抽出する方法はありませんIBM_DB、データの複数の行を抽出し、サイクルが抽出する必要がある
以外はEX AS例外:
     プリント(EX)
 最後に
    IBM_DB。クローズ(CONN)
チャールズ-SELECT 

 

公式ドキュメント

  https://www.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/kc_gen/developing-gen1.html

モジュールのインストール

  ウィンドウズ

    使用PyCharmのインストール:ファイル - >設定 - >プロジェクト:XXX - >プロジェクト通訳

    

    Windowsの手動インストール

    1.抽出IBM_DB-2.0.7.ta​​r.gz ntx64_odbc_cli.zip clidriverディレクトリとIBM_DB-2.0.7へのディレクトリ

    ディレクトリ抽出する実行cmdの後2.   Pythonはsetup.py installを   

    3. 2.0.7 py3.5.egg IBM_DB%PYTHON_HOME%\ Libの\サイト・パッケージに最後に、clidriverディレクトリ - \の下に 

  Linuxの

    インストール使用してピップは、公式サイトに行く必要がドライバパッケージをダウンロードするので、私は手動インストールのために事前にダウンしていた、少し遅い感じています:

    Baiduのクラウドディスク:https://pan.baidu.com/s/1skGhqMD

    1.  タール ibm_db- -zxvf 2.07タール .gzを 

    2.  タール -zxvf linuxx64_odbc_cli。タール .gzを 

    3.  CDがibm_db- 2.07 

    4. python3 install setup.py 

      安装成功会有一个提示,告诉你要把clidriver驱动包放到其中一个目录中:

      /usr/local/lib/python3.5/site-packages/clidriver

      /usr/local/lib/python3.5/site-packages/ibm_db-2.0.7-py3.5-linux-x86_64.egg/clidriver

    5. mv clidriver/ /usr/local/lib/python3.5/site-packages/ibm_db-2.0.7-py3.5-linux-x86_64.egg/clidriver 

代码示例

import ibm_db

# 连接字符串
connStr = "DATABASE=MSJ;HOSTNAME=13.13.13.123;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;"
conn = None
try:
    # 连接数据库
    conn = ibm_db.connect(connStr, "", "")
    # 以插入语句为例,删除和更新只需要替换语句即可
    sql = "insert into tab_student values('%s', '%s')" % (1, "Jet")
    # 执行SQL语句
    stmt = ibm_db.exec_immediate(conn, sql)
    # 获取受影响的行数
    rows = ibm_db.num_rows(stmt)
except Exception as ex:
    print(ex)
finally:
    # 关闭数据库
    ibm_db.close(conn)
自动提交-增-INSERT、删-DELETE、改-UPDATE

import ibm_db

# 连接字符串
connStr = "DATABASE=MSJ;HOSTNAME=13.13.13.123;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;"
conn = None
try:
    # 连接数据库
    conn = ibm_db.connect(connStr, "", "")
    # 关闭自动提交
    ibm_db.autocommit(conn, ibm_db.SQL_AUTOCOMMIT_OFF)
    # 以插入语句为例,删除和更新只需要替换语句即可
    sql = "insert into tab_student values('%s', '%s')" % (1, "Jet")
    # 执行SQL语句
    stmt = ibm_db.exec_immediate(conn, sql)
    # 获取受影响的行数
    rows = ibm_db.num_rows(stmt)
    # 提交事务
    ibm_db.commit(conn)
except Exception as ex:
    # 回滚事务
    ibm_db.rollback(conn)
finally:
    # 关闭数据库连接
    ibm_db.close(conn)
手动提交-增-INSERT、删-DELETE、改-UPDATE

import ibm_db

# 连接字符串
connStr = "DATABASE=MSJ;HOSTNAME=13.13.13.123;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;"
conn = None
try:
    # 连接数据库
    conn = ibm_db.connect(connStr, "", "")
    # -------------------执行语句有两种方式-----------------------#
    # 1、采用立即执行的方式,不支持 ? 占位符,只能采取拼接字符串的方式,且字符串类型的数据一定要有单引号
    sql = "SELECT * FROM TAB_USER WHERE MOBILE = '%s';" % "13911111111"
    stmt = ibm_db.exec_immediate(conn, sql)
    result = ibm_db.fetch_both(stmt)    # 提取结果
    print(result)

    # 2、采用预编译的方式,支持 ? 占位符
    sql = "SELECT * FROM TAB_USER WHERE MOBILE= ?"
    sql_args = ("13911111111",)
    stmt = ibm_db.prepare(conn, sql)    # 预编译
    ibm_db.execute(stmt, sql_args)      # 执行
    result = ibm_db.fetch_row(stmt)
    print(result)
    # -------------------提取查询结果有四种方式-----------------------#
    # 1.先调用fetch_row(stmt),有结果返回true否则返回false,再调用ibm_db.result(stmt, col_idx)提取结果
    # ibm_db.fetch_row(stmt)
    # result = ibm_db.result(stmt, 0)

    # 2.调用fetch_both(stmt)提取一行,返回的结果是一个字典,取值可以用列名或索引 result["MOBILE"]或 result[0]
    # result = ibm_db.fetch_both(stmt)

    # 3.调用fetch_assoc(stmt)提取一行,返回的是一个字典,取值只能用列明 result["MOBILE"]
    # result = ibm_db.fetch_assoc(stmt)

    # 4.调用fetch_tuple(stmt)提取一行,返回的是一个元组,取值只能用索引 result[0]
    # result = ibm_db.fetch_tuple(stmt)

    # 注: ibm_db没办法一次提取多行,提取多行数据,需要循环提取
except Exception as ex:
    print(ex)
finally:
    ibm_db.close(conn)
查-SELECT 

 

おすすめ

転載: www.cnblogs.com/haitaoli/p/10981206.html