2011-07-06 3 views
2

私はPython 2.7とSQLite3のプロジェクトを持っています。fetchone()はint変数をタプルに設定しています

SQLite3データベース列に整数変数を格納しようとしていて、後でSQLite列の値に変数を設定できるようになりました。

接続は問題なく、列は存在し、タイプは「int」です。

私はデータを引き出すために、このコードを使用しています:

Trailcrest.fish_score = c.execute("SELECT fish_score FROM roster WHERE agentnumber = ?;", (AN,)).fetchone() 

私が呼んでいる「」変数は、このコードを格納してDEFが呼ばれ、引数として与えられています。

しかし、データが書き込まれている間にTrailcrest.fish_score変数を見ると、整数ではなくタプルとして書き出されています。変数には元々整数が含まれていました。

何が起こっていますか?どうすれば修正できますか? (私はいくつかのキャスティングを行う必要があると思っていますが、わかりません)

答えて

6

fetchone()は、まだ孤独なフィールドを解析する必要がある行のようなオブジェクトを返します。データを取り出す必要があります

row = c.execute("SELECT fish_score FROM roster WHERE agentnumber = ?;", (AN,)).fetchone() 
if row is not None: # or just "if row" 
    Trailcrest.fish_score = row[0] 
else: 
    pass # didn't get back a row 
+0

これは機能します。ありがとうございました。このコードを使用する人は、コメント以外のものを "else:"の下に置いてください。そうしないとコンパイラが怒ってしまいます。 – CodeMouse92

+2

@Jason:その目的(プレースホルダ)のために 'pass'キーワードが作成されました。 – bernie

関連する問題