python-firebaseでCRUD操作

Python経由でFirebaseのDBを操作することができるので、CRUD操作の方法をまとめた。

インストール

pipでrequestsとpython-firebaseをインストール。 python-firebase 1.2のチュートリアルだと、requestsのバージョン指定がある。 でも僕の場合、既にインストール済みver2.4.3を使ってるけど問題ないから関係ないっぽい。

$ sudo pip install requests==1.1.0
$ sudo pip install python-firebase

接続

インストールが完了したら、早速Firebaseに接続。2行でOK。

>>> from firebase import firebase
>>> firebase = firebase.FirebaseApplication("https://<your-app-id>.firebaseio.com", None)

Create

putを使う。渡すのはdictのlist。引数は順に、url、key、value。urlは不要。 valueは単純に1とかの値でもいいし、dictのlistみたいな入り組んだのでもOK。とにかくjsonライクなデータ。jsonでもいい。 ちなみにdictのlistってなんて呼んでるんでしょうか、皆さん。

>>> data = [{'id': 'A001', 'name': 'Google'}, {'id': 'A002', 'name': 'Microsoft'}, {'id': 'A003', 'name': 'IBM'}]
>>> result = firebase.put('', '/test', data)

Read

putで入れたデータはgetで取得。keyで指定したtest以下を読み込む。

>>> result = firebase.get('/test', None)
>>> print result
[{u'id': u'A001', u'name': u'Google'}, {u'id': u'A002', u'name': u'Microsoft'}, {u'id': u'A003', u'name': u'IBM'}]

Update

これもputでOK。dictのlistを渡したときの最初のidをA001からB001に変えてみる。 最初なので、/test/0となる。

>>> firebase.put('', '/test/0/id', 'B001')
u'B001'
>>> result = firebase.get('/test', None)
>>> print result
[{u'id': u'B001', u'name': u'Google'}, {u'id': u'A002', u'name': u'Microsoft'}, {u'id': u'A003', u'name': u'IBM'}]

Delete

そのままのメソッド名のdeleteを使う。test以下をまるごと消してみる。

>>> result = firebase.delete('/test', None)
>>> result = firebase.get('/test', None)
>>> print result
None

その他

postを使ってもデータの挿入可能。チュートリアルだと、これが使われているけど、 IDが割り振られるので、不要な人はputでいいと思う。

>>> result = firebase.post('/test', data)
>>> result = firebase.get('/test', None)
>>> print result
{u'-KRxkKQIBasry9UCf7Bc': [{u'id': u'A001', u'name': u'Google'}, {u'id': u'A002', u'name': u'Microsoft'}, {u'id': u'A003', u'name': u'IBM'}]}

参考文献