[8日間]Flask、Sqlite
1.学習内容
sqlite 3データベースの作成
glitchでのsqliteの使用
詳細については、sqlite tutorial公式ホームページ(https://www.sqlitetutorial.net/sqlite-commands/)を参照してください.
glitch terminalに「sqlite 3」と入力してsqliteを使用します.sqlite3
.openでファイルを作成します.ファイル名は「db」です.「split 3」です..open db.split3
トピックテーブルを作成し、id、title、body列を作成します.CREATE TABLE topics (id INTEGER PRIMARY KEY, title TEXT NOT NULL, body TEXT);
テーブルを片付けてからテーブルによって作成されたテーブルのリストを表示できます..tables
トピックテーブルのschemaを決定します..schema topics
idはprimary keyによって作成されるのでtitleとbodyデータを挿入します.INSERT INTO topics (title, body) VALUES ('sqlite', 'sqlite is..');
入力したデータを確認します.SELECT * FROM topics;
テーブルがうまくいかなければ、DROPを行います.DROP TABLE topics;
トピック・テーブルのデータを消去するときにDELETEを使用します.DELETE FROM topics WHERE id=2;
Pythonを使用してデータベースを制御する
sqlite3
.open db.split3
CREATE TABLE topics (id INTEGER PRIMARY KEY, title TEXT NOT NULL, body TEXT);
.tables
.schema topics
INSERT INTO topics (title, body) VALUES ('sqlite', 'sqlite is..');
SELECT * FROM topics;
DROP TABLE topics;
DELETE FROM topics WHERE id=2;
import sqlite3
con = sqlite3.connect('database')
cur = con.cursor()
cur.execute('SELECT * FROM topics')
topics = cur.fetchall()
print(topics)
import sqlite3
con = sqlite3.connect('database')
cur = con.cursor()
for row in cur.execute('SELECT * FROM topics'):
print(row)
FlashでのSqliteの使用
(変更のみ追加)
def template(content, id=None):
conn = sqlite3.connect("test.db", isolation_level=None)
cs = conn.cursor()
cs.execute('SELECT * FROM topics')
topics = cs.fetchall()
conn.close()
liTags = ''
for topic in topics:
liTags = liTags + f'<li><a href="/read/{topic[0]}">{topic[1]}</a></li>'
追加後、データを追加する最後のidのreadページに移動します.
cursorにlastrowを尋ね、インポートします.
@app.route('/create_process/', methods=['POST'])
def create_process():
conn = sqlite3.connect('test.db')
cs = conn.cursor()
# global nextId
getTitle = request.form['title']
getBody = request.form['body']
cs.execute('INSERT INTO topics (title, body) VALUES (?, ?)', (getTitle, getBody))
id = cs.lastrowid
conn.commit() # commit 전까지는 실제로 writing이 안 되고 있다.
conn.close()
return redirect(f'/read/{id}/')
@app.route("/delete/<int:id>/", methods=['POST'])
def delete(id):
conn = sqlite3.connect('test.db')
cs = conn.cursor()
cs.execute('DELETE FROM topics WHERE id=?', (id,))
conn.commit()
conn.close()
return redirect('/')
2.重要な内容
1つのパラメータ:「DELETE FROMテーマWHERE ID=?」(id,)
1つなら、追加するのはtupleの形で伝えるためです.
2つのパラメータ:「INSERT INTOテーマ(title,body)VALuES(?,?)」(getTitle, getBody)
3.勉強の心得
リストでデータベースのように真似できますが、
ページを再開すると、飛んでいって気分が悪くなるほか、違う部分で
Databaseを使用することで解決できます.
Reference
この問題について([8日間]Flask、Sqlite), 我々は、より多くの情報をここで見つけました
https://velog.io/@lnglog/8일차-Flask-Sqlite
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([8日間]Flask、Sqlite), 我々は、より多くの情報をここで見つけました https://velog.io/@lnglog/8일차-Flask-Sqliteテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol