酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

python3でSQLiteをoratorを使って操作する

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)