2017-09-04 2 views
0

enter image description here주요 외국 데이터베이스에 <에서 sqlite3.Row 객체>

books.book_id = 기본 키

chapters.book_id = 외국

내 chapters.book_id 그것에서하는 방법을 살펴해야 키 사진? 나는 내부가

cur = db.execute("SELECT books.title, chapters.chapter FROM books INNER JOIN chapters ON books.book_id=chapters.book_id") 

난 그냥

이 코드는 내 데이터베이스

@app.route('/newbook') 
def new_book(): 
    return render_template('newbook.html') 

@app.route('/addbook', methods=['GET', 'POST']) 
def addbook(): 
    db = get_db() 
    db.execute("INSERT INTO books (title) VALUES (?)", 
     [request.form['title']]) 
    db.commit() 

    return redirect(url_for('new_chapter')) 


@app.route('/newchapter') 
def new_chapter(): 
    return render_template('newchapter.html') 

@app.route('/addchapter', methods=['GET', 'POST']) 
def addchapter(): 
    db = get_db() 
    cur = db.execute("SELECT last_insert_rowid()") 
    book_id = cur.fetchone() 
    db.execute("INSERT INTO chapters (chapter, book_id) VALUES (?, ?)", [request.form['chapter'], str(book_id)]) 
    db.commit() 

    return redirect(url_for('new_concepts')) 

답변

0

쿼리에 HTML 양식에서 데이터를 삽입 화면에 인쇄 []을 얻을에 가입 할

(잠재적으로) 많은 행과 열이있는 테이블과 같은 객체를 반환합니다.

커서를 반복하거나 fetchone()을 호출하면 각 단계에서 행이 반환됩니다.

행은 모든 열 값을 포함하는 튜플입니다. 단일 열이있는 경우에도 그 값은 여전히 ​​튜플에 래핑됩니다.

book_id = db.execute("SELECT last_insert_rowid()").fetchone()[0] 
#               ^^^ 

last_insert_rowid() 변화의 반환 값 장을 삽입 한 후, 그래서 당신은 삽입 할 때주의하시기 바랍니다 :

쿼리에서 단일 값을 얻으려면, 당신은 튜플에서 추출해야 같은 책에 대한 두 번째 장, 그것은 폭발 할 것입니다. 책을 삽입 한 직후 책 ID를 읽어야하며 커서의 lastrowid attribute은 사용하기가 더 간단합니다.