pythonからSQLiteを操作するスクリプトを考えたのですが「SQL文書きたくないなぁ……」と躊躇していたところ、pythonには「orator」というO/Rマッパーがあることを知って実際に使ってみました。
python3でSQLiteをoratorを使って操作する
pythonのスクリプトは何度か書いたことがありますが、python2.x系とpython3.x系の文法の違いがあったり、時間が空いてしまったりして、毎回使えるようになるまでイチから勉強しなおしみたいな状態です。
if文の最後がコロン(:)で終わるのを思い出せず延々とsyntaxエラーと戦ったりしていました。今は機械学習とかでpythonが重宝されているらしいので、良い機会だしスクリプト言語(っていうのか?)をきちんとやってもいいかもしれない。
数時間かけて、ようやくテーブルをひとつ作って操作できるようになったので忘備録がわりに残しておきます。
python3とoratorをインストールする
スクリプトを実行する環境はmacOS High Sierraなので、Homebrewを使ってpython3をインストールしました。
brew install python3 python3 -m pip install --upgrade pip python3 -m pip install -U orator
データベースを作るまで
import datetime from orator import DatabaseManager, Model from orator import Schema DATABASES = { 'development': { 'driver': 'sqlite', 'database': 'sample.sqlite' } } db = DatabaseManager(DATABASES) schema = Schema(db) Model.set_connection_resolver(db)
Userテーブルを作る
# usersテーブルが存在していなければ作成する if not schema.has_table('users'): with schema.create('users') as table: table.increments('id') table.integer('user_id') table.string('name') table.datetime('created_at') table.datetime('updated_at')
Userを追加する
# ユーザーを追加する user = User() user.user_id = user_id user.name = 'sakusan' user.save() # ユーザーの数を数える count = User.where('user_id', user_id).count() # 特定のユーザーIDのユーザーを取得する user = User.where('user_id', user_id).first_or_fail() # PKでユーザーを取得する user = User.find(1)