import MySQLdb
# データベース接続を開く
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# Cursor() メソッドを使用してカーソルオブジェクトを準備する
cursor = db.cursor ()
# データベースにレコードを INSERT するための SQL クエリを準備します。
sql = "INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('%s', '%s', '%) d', '%c', '%d' )" %
('Mac', 'Mohan', 20, 'M', 2000)
try:
# SQL コマンドを実行する
cursor.execute(sql)
# データベースへの変更をコミットします
db.commit()
以外:
# エラーがあった場合はロールバックします
db.rollback()
# サーバーから切断します
db.close()
読み取り操作:
fetchone (): このメソッドは、クエリ結果セットの次の行をフェッチします。結果セットがオブジェクトの場合、テーブルのクエリに対してカーソル オブジェクトが返されます。
fetchall(): このメソッドは結果セットのすべての行をフェッチします。結果セットから一部の行がフェッチされた場合、 fetchAll() メソッドは結果セットの残りの行を取得します。
rowcount: これは、execute() メソッドの影響を受ける行数を返す読み取り専用プロパティです。
#!/usr /bin/python
import MySQLdb
# データベース接続を開く
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# カーソルを準備するcursor()メソッドを使用するオブジェクトcursor = db.cursor()#sqlクエリを準備して、レコードをデータベースに挿入します。データベースにレコードを INSERT するための SQL コマンド
cursor.execute(sql)
# リストのリスト内のすべての行をフェッチします
results =cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2] sex = row[3] 収入 = row[4] # 取得した結果を出力します
print "fname=%s,lname=%s,age=%d,sex =%s,income = % d " % n (FNAME, LNAME, Age, Sex, Income)
例外:
Print" Error: Unable to Fectth Data "
# サーバーから切断
db.close () データベースの更新がある場合この操作は、データベース内の 1 つまたは複数のレコードをすでに更新できることを意味します。全レコードを「M」SEXに更新する手順は以下の通りです。ここでは、すべての男性の年齢に 1 歳を加えます
#!/usr/bin/python
import MySQLdb
# データベース接続を開きます
db = MySQLdb.connect("localhost","testuser","test123") ,"TESTDB" )
# Cursor() メソッドを使用してカーソル オブジェクトを準備します
cursor = db.cursor()
# 必要なレコードを UPDATE する SQL クエリを準備します
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1
WHERE SEX = '%c'" % ('M')
try:
# SQL コマンドを実行
cursor.execute(sql)
# データベースへの変更をコミット
db.commit()
例外:
# 場合によってはロールバックエラーがあります
db.rollback()
# サーバーから切断します
db.close()
削除操作: データベースからいくつかのレコードを削除する場合は、
DELETE 操作が必要です。以下は、20 歳以上の従業員のすべてのレコードを削除するプログラムです
例:
#!/usr/bin/python
import MySQLdb
# データベース接続を開きます
db = MySQLdb.connect(" localhost", "testuser","test123","TESTDB" )
# Cursor() メソッドを使用してカーソル オブジェクトを準備します
cursor = db.cursor()
# 必要なレコードを DELETE するための SQL クエリを準備します
sql = "DELETE従業員の年齢 > '%d'" % (20) からtry:
# SQL コマンドを実行します
cursor.execute(sql)
# データベースへの変更をコミットします
db.commit()
例外:
# エラーが発生した場合はロールバックします
db.rollback()
#サーバーから切断します
db.close()
トランザクションの実行:
トランザクションは、次の 4 つのプロパティを持つ必要があります:
原子性: トランザクションが終了するか、何も起こらないかのいずれかです。
一貫性。 : トランザクションは一貫した状態で開始され、システムを一貫した状態のままにする必要があります。
分離: トランザクションの中間結果は現在のトランザクションの外部には表示されません。
永続性: トランザクションがコミットされると、その効果は持続します。システム障害の後。
Python DB API 2.0 には、トランザクションをコミットまたはロールバックするための 2 つのメソッドが用意されています
------- ------- ---------------------------------------
MySQLdb をインポートする
con = MySQLdb.connect(host='localhost', user='root', passwd='root', db='hr_resume_center', charset='utf8')
cursor = con.cursor()
sql = "hr_resume_core に挿入(resume_id,name,mobile,email,add_time,sys_time,version) VALUES(%s,%s,%s,%s,%s,%s,%s)"
param = [
(1,'bright ','13641154657','jackieming@sina.cn',1385625423,1385625423,1),
(2,'明るい','13641154657','jackieming@sina.cn',1385625423, 1385625423,1),
( 3,'bright','13641154657','jackieming@sina.cn',1385625423,1385625423,1),
]
cursor.execute(sql,param)
cursor.close()
con.close()