Python総合学習【データベース操作編】

データベースへの接続
データベースに接続する処理について解説します。
ソース
#coding: shift_jis
import win32com.client
Cn = win32com.client.Dispatch("ADODB.Connection")
strCn = "Provider=SQLOLEDB;" \
"Data Source=localhost\\SQLExpress;" \
"Initial Catalog=Database;User ID=sa;Password=sa;"
Cn.ConnectionString = strCn
Cn.Open()
print("接続完了")
input()
Cn.Close()
ADODB.Connection
データベース接続に使用するオブジェクト
Connection.ConnectionString = 接続文字列
接続文字列を設定します。
Connection.Open()
データベースに接続します。
Connection.Close()
データベースとの接続を切断します。
データの取得
データを取得する処理について解説します。
ソース
#coding: shift_jis
import win32com.client
Cn = win32com.client.Dispatch("ADODB.Connection")
strCn = "Provider=SQLOLEDB;" \
"Data Source=localhost\\SQLExpress;" \
"Initial Catalog=Database;User ID=sa;Password=sa;"
Cn.ConnectionString = strCn
Cn.Open()
strSQL = "SELECT * FROM 社員マスタ"
Rs = win32com.client.Dispatch("ADODB.Recordset")
Rs.Open(strSQL, Cn)
while not Rs.EOF:
print(Rs.Fields("社員コード").Value, Rs.Fields("社員名").Value)
Rs.MoveNext()
input()
Rs.Close()
Cn.Close()
ADODB.Recordset
データ操作に使用するオブジェクト
Recordset.Open(SQL文, Connectionオブジェクト)
レコードセットを作成します。
Recordset.Close()
レコードセットを閉じます。
SQLの実行
SQLを実行する処理について解説します。
ソース
#coding: shift_jis
import win32com.client
Cn = win32com.client.Dispatch("ADODB.Connection")
strCn = "Provider=SQLOLEDB;" \
"Data Source=localhost\\SQLExpress;" \
"Initial Catalog=Database;User ID=sa;Password=sa;"
Cn.ConnectionString = strCn
Cn.Open()
strSQL = "UPDATE 社員マスタ " \
"SET 部門コード = 3 " \
"WHERE 社員コード = 4"
Cn.Execute(strSQL)
print("更新完了")
input()
Cn.Close()
Connection.Execute(SQL文)
指定されたSQL文を実行します。
トランザクション処理
トランザクション処理について解説します。
ソース
#coding: shift_jis
import win32com.client
Cn = win32com.client.Dispatch("ADODB.Connection")
try:
Cn.ConnectionString = "Provider=SQLOLEDB;" \
"Data Source=localhost\\SQLExpress;" \
"Initial Catalog=Database;User ID=sa;Password=sa;"
Cn.Open()
Cn.BeginTrans()
strSQL = "INSERT 社員マスタ VALUES(1, '社員A', 1)"
Cn.Execute(strSQL)
strSQL = "INSERT 所有資格マスタ VALUES(1, 1, '簿記3級')"
Cn.Execute(strSQL)
Cn.CommitTrans()
print("更新完了")
except:
Cn.RollbackTrans()
print("更新失敗")
finally:
Cn.Close()
input()
Connection.BeginTrans()
トランザクション処理を開始します。
Connection.CommitTrans()
更新内容を確定する場合は、コミットします。
Connection.RollbackTrans()
更新内容を破棄する場合は、ロールバックします。
データベース別の接続文字列
データベース別の接続文字列については、ご覧のとおりです。
ソース
Oracle
strCn = "Provider=OraOLEDB.Oracle;" \
"Data Source=ホスト名:1521/XEPDB1;" \
"User Id=MYUSER;Password=MYUSER;"
MySQL
strCn = "DRIVER={MySQL ODBC 8.0 ANSI Driver};" \
"SERVER=localhost;PORT=3306; " \
"DATABASE=myschema;UID=root;PASSWORD=manager;"
Access
strCn = "Provider=Microsoft.ACE.OLEDB.12.0;" \
"Data Source=C:\\Users\\home\\Desktop\\Database.accdb"