0.初めに
私はエンジニアではないただのドシロウトです。
Python3+Flask+SQLite3の環境が簡単に作れるRepl.itというオンラインIDEを試してみました。
Repl.it - The world's leading online coding platform
https://repl.it/
60以上のプログラム言語に対応したIDEみたいです。
無料で使えます。(非公開だと有料)
1.使い方
あまりに簡単なので使い方をアニメGIFまとめました。
たったこれだけです。
ログインしなくても保存できないだけで試すことはできます。
2.コピペしたプログラム
すごく単純なFlaskを利用したプログラムです。
WEB画面から以下ができるプログラムです。
- データベースの生成
- テーブルの生成
- テーブル内容一覧表示
- データベースの削除
main.py
from flask import Flask
import os
import sqlite3
import sys
app = Flask(__name__)
@app.route("/")
def index():
#return "Hello World!"
return '''
<h1>Flask SQLite3テスト</h1>
<a href="./readtasktb">タスク一覧</a><br>
<a href="./credb">DB生成</a><br>
<a href="./cretable">テーブル生成</a><br>
<a href="./deldb">DB削除</a><br>
'''
@app.route("/credb")
def credb():
kka = ""
db_filename = 'todo.db'
db_is_new = not os.path.exists(db_filename)
conn = sqlite3.connect(db_filename)
if db_is_new:
print('Database created!!')
kka = 'Database created!!'
else:
print('Database exists, assume schema does, too.')
kka = 'Database exists, assume schema does, too.'
conn.close()
return kka + "<br><br><a href=\"../\">back</a>"
@app.route("/deldb")
def deldb():
kka = ""
db_filename = 'todo.db'
try:
os.remove(db_filename)
kka = "Database deleted!!"
except Exception as e:
kka = "Database not deleted!! becouse of <br>"+str(e)
return kka + "<br><br><a href=\"../\">back</a>"
@app.route("/cretable")
def cretable():
kka = ""
db_filename = 'todo.db'
with sqlite3.connect(db_filename) as conn:
conn.executescript("""
create table project (
name text primary key,
description text,
deadline date
);
create table task (
id integer primary key autoincrement not null,
priority integer default 1,
details text,
status text,
deadline date,
completed_on date,
project text not null references project(name)
);
""")
print('Create schema')
kka = kka + 'Creating schema<br>'
conn.executescript("""
insert into project (name, description, deadline)
values ('pymotw', 'Python Module of the Week',
'2016-11-01');
insert into task (details, status, deadline, project)
values ('write about select', 'done', '2016-04-25',
'pymotw');
insert into task (details, status, deadline, project)
values ('write about random', 'waiting', '2016-08-22',
'pymotw');
insert into task (details, status, deadline, project)
values ('write about sqlite3', 'active', '2017-07-31',
'pymotw');
""")
print('Insert initial data')
kka = kka + '<br>Insert initial data<br>'
return kka + "<br><br><a href=\"../\">back</a>"
@app.route("/readtasktb")
def readtasktb():
kka = ""
db_filename = 'todo.db'
try:
with sqlite3.connect(db_filename) as conn:
cursor = conn.cursor()
cursor.execute("""
select id, priority, details, status, deadline from task
where project = 'pymotw'
""")
for row in cursor.fetchall():
task_id, priority, details, status, deadline = row
print('{:2d} [{:d}] {:<25} [{:<8}] ({})'.format(
task_id, priority, details, status, deadline))
kka = kka + '{:2d} [{:d}] {:<25} [{:<8}] ({})'.format(
task_id, priority, details, status, deadline) + '<br>'
except Exception as e:
kka = "Task table list not generated!! becouse of <br>"+str(e)
return "task tb read result<br><br>" + kka + "<br><br><a href=\"../\">back</a>"
if __name__ == "__main__":
app.run(debug=True, port='3000', host='0.0.0.0')
3.おわりに
プログラムが準備できていれば30秒でPython3+Flask+SQLite3のテストができます。
なかなか便利だと思います。
以 上