公式ドキュメント
https://www.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/kc_gen/developing-gen1.html
モジュールのインストール
ウィンドウズ
使用PyCharmのインストール:ファイル - >設定 - >プロジェクト:XXX - >プロジェクト通訳
Windowsの手動インストール
1.抽出IBM_DB-2.0.7.tar.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.0。7。タール .gzを
2. タール -zxvf linuxx64_odbc_cli。タール .gzを
3. CDがibm_db- 2.0。7
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.0。7 -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)
インポート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)を
インポート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)
公式ドキュメント
https://www.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/kc_gen/developing-gen1.html
モジュールのインストール
ウィンドウズ
使用PyCharmのインストール:ファイル - >設定 - >プロジェクト:XXX - >プロジェクト通訳
Windowsの手動インストール
1.抽出IBM_DB-2.0.7.tar.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.0。7。タール .gzを
2. タール -zxvf linuxx64_odbc_cli。タール .gzを
3. CDがibm_db- 2.0。7
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)
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)
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)