WSGIの仕様に沿ったWebフレームワークです。
from wani import Wani, Response
app = Wani()
@app.route("/", ["GET"])
def hello(request):
return Response("Hello, Wani")
if __name__ == "__main__":
app.run()
ブラウザから http://127.0.0.1:5000/
にアクセスすると "Hello, Wani" と表示されます。
デコレータでルーティングを設定できます。
@app.route("/", ["GET"])
def hello(request):
""" usersテーブルのレコードを全件取得し、一番目のレコードを表示 """
u = WactiveRecord("users")
all_users = u.all()
return Response("Hello, {}".format(all_users[0]["name"]))
@app.route("/find_user/{id}", ["GET"])
def find_user(request, id):
""" usersテーブルから引数idのレコードを見つける """
u = WactiveRecord("users")
record = u.find(id)
return Response("{}".format(record.data))
@app.route("/data", method=["GET", "POST"])
def get_data(request):
if request.method == "GET":
return TemplateResponse("data-form.html")
else:
return Response("{}".format(request.forms["num"]))
Waniは標準のORM(WactiveRecord)で、SQLiteを扱うことができます。
wani/wactive_record/manage_db.py
ではテーブルの作成、カラムの追加、インデックス付与などができます。
-
テーブルの作成
authでユーザーが登録されているか検索する際はemailカラムをもとに検索を行うためemailカラムの追加が必須。
idは自動付与される(PRIMARY KEY AUTOINCREMENT)。
テーブルはdb/development.sqlite3
に保存。
$ python manage_db.py create [table_name] [カラム名]:[型] ...
$ python manage_db.py create users "name:text" "year:int" "email":text
-
既存テーブルへのカラム追加
$ python manage_db.py add [table_name] [カラム名]:[型]
$ python manage_db.py add users "place:text"
-
既存カラムへインデックス付与
インデックス名はデフォルトで "カラム名index" になる。
$ python manage_db.py index [table_name] [カラム名]
$ python manage_db.py index users name
from wani import WactiveRecord
u = WactiveRecord("users")
u.find(2)
WactiveRecord(テーブル名)
でテーブル名に基づくWactiveRecordオブジェクトを生成できます。
- all()
オブジェクトが持つレコードを全件取得
u.all()
- first()
オブジェクトが持つ最小idを取得
u.first()
- last()
オブジェクトが持つ最大レコードを全件取得
u.last()
- find(id: int)
オブジェクトの中で指定されたidレコードを1件取得
u.find(3)
- find_by(column_name=value)
オブジェクトの中で指定された条件のレコードを最初の1件取得
u.first(name=tom)
- where(rule: str)
オブジェクトの中で指定されたruleに基づくレコードを全件取得
ruleは"place = tokyo"など、演算子の前後にスペース1つ入れて指定
u.where("place = tokyo")