トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

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>
>>> 

各行の解説

  1. 事前データの確認用select文
  2. 2行結果が返ってきて、その2行目をupdate、delete対象とする
  3. update文を発行
  4. 2行目がsatoruにupdateされていることを確認
  5. delete文を発行
  6. deleteされていることを確認

感想

とりあえず、python-MySQLの疎通は完了ということで。

しかし、pythonのコンソールって、ちょっと動かしたいときにすごい便利ですね~