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))")
에서 작동하지 않는, 그리고 그것은 1. 내가 파이썬으로이 데이터베이스를 만들어 반환, 나는 필드를 확인하기 위해 데이터베이스보기 프로그램을 사용했다. 기본 키에서 텍스트 필드에 이르기까지 모든 것이 올바른 것으로 나타 났으 나 외래 키는 없습니다. user_id를 int로 표시합니다. 또한 삽입 할 때 값을 넣지도 않습니다. 나는 사용자를 삽입하면 행을 만들어야하고 게시물에서 참조가 있어야한다고 생각합니다. 하지만 user_id 필드를 쿼리하면 'none'이 반환됩니다. 내가 도대체 뭘 잘못하고있는 겁니까?sqlite3를 외부 키는 이미에 = 프라 그마 foreign_keys를 사용할 수있는 모든
편집 : 여기 내가이
@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'))
설명에있는 모든 것이 올바르게 들립니다. 당신의 감정이 잘못되었습니다. 당신이 실제로하고 싶은 것은 무엇입니까? –
사용자 (이름, 전자 메일, 암호) 및 게시물 (본문, 사용자 ID) 테이블을 만들고 싶습니다. 그런 다음 데이터베이스, 게시물 및 누가 게시물을 검색 할 수 있기를 원합니다. html로 쉽게 읽을 수 있도록 표시하고 싶습니다. 나는 테이블 개념을 올바로하고 있다고 생각하지만 완전히 틀릴 수있다. 나는 이것이 다른 사람들이 잘한 방법이라고 생각했다. 사용자 테이블이 업데이트 될 때 외래 키가 자동으로 업데이트되기를 원합니다. "on update cascade"를 시도했지만 도움이되지 않았습니다. – gallly
전파되어야하는 업데이트의 구체적인 예를 보여줄 수 있습니까? –