cur.execute("CREATE TABLE users(id integer PRIMARY KEY, username TEXT, password TEXT, email TEXT)")
cur.execute("CREATE TABLE posts(id integer PRIMARY KEY, body TEXT, user_id int, FOREIGN KEY(user_id) REFERENCES users(id))")
プラグマforeign_keys = onをすでに有効にしていましたが、1が返されました。このデータベースをpythonで作成し、データベース表示プログラムを使用してフィールドを確認しました。主キーからテキストフィールドまで、すべてが正しいことを示しましたが、外部キーはありませんでした。user_id を int として表示するだけです。また、挿入時に値が入力されません。ユーザーを挿入すると、行が作成され、投稿の参照になるはずです。しかし、user_id フィールドを照会すると、「none」が返されます。私は何を間違っていますか?
編集:これが私がそれを機能させる方法です
@app.route('/add', methods=['POST'])
def add():
c = g.db.execute("INSERT INTO posts(body) VALUES(?)", [request.form['body']])
b = g.db.execute("INSERT INTO users(username) VALUES(?)", [request.form['name']])
get = g.db.execute("SELECT id from users where username=?", [request.form['name']])
id = get.fetchone()
userid=str(id[0])
bet = g.db.execute("SELECT id from posts where body=?", [request.form['body']])
bid = bet.fetchone()
postid = str(bid[0])
e = g.db.execute("UPDATE posts SET user_id = (?) where id = (?) ", [userid,postid])
g.db.commit()
flash('subbmited')
return redirect(url_for('home'))