E71でPython-MySQLdbでCRUD
Last-modified: 2013-08-24 (土) 02:14:21 (3898d)
Top / E71でPython-MySQLdbでCRUD
E71でPython-MySQLdbでCRUD †
タイトルの日本語がおかしいですが、Python-MySQLdbでCRUDやってみた記録です。
※CRUD:Create、Read、Update、Deleteの略
参照(select文)はE71でPython-MySQLdbの動作確認でやってますんで、更新系を中心にやってみます。
Insert文 †
早速やってみました。MySQLへの接続は前回と同様です。
Python 2.2.2 (#0, Nov 7 2008, 14:24:30) [C] on symbian_s60 Type "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> import MySQLdb >>> conn = MySQLdb.connect(db="test_db", host="127.0.0.1", user="root",passwd="") >>> >>> cur = conn.cursor() >>>
ここまでで、MySQLへの接続、SQL文実行準備が完了!
早速Insert文を発行してみる。
>>> cur.execute('''insert into test values ('jiro','pass1')''') 1L
insert文は、中でシングルクオートを使うので、「'''」でくるみます。
発行した結果、「1L」って出力されているので、なんか成功したっぽい。
本当に入っているか、selectしてみる。
>>> cur.execute('select * from test') >>> 1L >>> rows = cur.fetchall() >>> for row in rows: ... print row[0],row[1] ... jiro pass1 >>>
うん、ちゃんと入ってる。じゃあ、ロールバックしてみよう!
>>> conn.rollback() >>>
ちゃんとロールバックされているか、確認
>>> cur.execute('select * from test') 1L >>> for row in rows: ... print row[0],row[1] ... jiro pass1 >>>
あら?ロールバックされていない・・・
もしかして、デフォルトでオートコミット??
MySQLuiから確認しても、レコードは挿入されてる。
ってことは、デフォルトでオートコミットなのね笑。
※MySQLのオートコミットについてはE71でのMySQLのオートコミット無効化についてで調べてます。
update文、delete文 †
updateもdeleteも、使い方はinsertと同じです。
>>> conn = MySQLdb.connect(db="test_db", host="127.0.0.1", user="testuser") >>> >>> cur = conn.cursor() >>> >>> cur.execute('select * from test') ←1 2L >>> >>> rows = cur.fetchall() >>> >>> for row in rows: ... print row[0],row[1] ... jiro jiropass saburo sabupass ←2 >>> >>> cur.execute('''update test set user='satoru' where user='saburo' ''') ←3 1L >>> cur.execute('select * from test') 2L >>> >>> rows = cur.fetchall() >>> >>> for row in rows: ... print row[0] jiro satoru ←4 >>> >>> cur.execute('''delete from test where user='satoru' ''') ←5 1L >>> >>> cur.execute('select * from test') 1L >>> >>> rows = cur.fetchall() >>> >>> for row in rows: ... print row[0] jiro ←6 >>> >>> cur.close <bound method Cursor.close of <MySQLdb.cursors.Cursor object at 0x174c8d0>> >>> conn.close <built-in method close of Connection object at 0x726430> >>>
各行の解説
- 事前データの確認用select文
- 2行結果が返ってきて、その2行目をupdate、delete対象とする
- update文を発行
- 2行目がsatoruにupdateされていることを確認
- delete文を発行
- deleteされていることを確認
感想 †
とりあえず、python-MySQLの疎通は完了ということで。
しかし、pythonのコンソールって、ちょっと動かしたいときにすごい便利ですね~