2017-03-05 3 views
0

私はPython CGIとMySQL(phpmyadmin)を使用しています。私はPythonで、このSQL文を実行しようとしている。(この例ではtk_journey = 620 - %sがある)MySQL - 整数を含んでいてもNULLを返す

SELECT tk_id, tk_seat_number FROM tickets 
     WHERE tk_journey = '%s' 
     ORDER BY tk_id DESC LIMIT 1; 

それはphpmyadminの中で完璧に動作し、何それは(これをしている)べき表示されます。

tk_id tk_seat_number 
94   2 

しかし、これをPythonスクリプトで実行すると、それぞれにNone/NoneTypeが返されます。

私はこれを試しました:SELECT MAX(tk_id), tk_seat_number FROM tickets WHERE tk_journey = '%s'しかし、それは同じ結果をもたらしました。

引用符を付けずに%sを使用しようとしましたが、mysql構文でもエラーが発生しました。私はまた、データベース接続を閉じて開こうとしました - うまくいきませんでした。 私はこの問題を多く研究してみましたが、助けには至りませんでした。ここ

は、Pythonコードである:この選択/テーブルへの情報の挿入と同様、他のいくつかの機能があるので= 620

def getSeatNum(jid): 
    statement = '''SELECT tk_id, tk_seat_number FROM tickets 
     WHERE tk_journey = '%s' 
     ORDER BY tk_id DESC LIMIT 1;''' 
    cursor.execute(statement, jid) 
    row = cursor.fetchone() 
    seat_num = row[0] 
    return(seat_num) 

seat_no = getSeatNum(jid) 

JIDは、DB接続が正常に動作するが、これは失敗しているように見えます?

ありがとうございます!

編集:これが私の目的であるかどうかはわかりません。これはこの質問の複製としてマークされています:Python MySQL TypeError。私はこのTypeErrorを得たことはありません。プログラムがエラーを発生させずに実行された場合、単にNULLを返しただけで、後で変数がNULLになるため影響を受けます。私が得るエラーは、上に示したようなSQLの構文エラーと、動作させるために手を出そうとしたときのさまざまなPythonエラーでした。このタイプのエラーではありません。

答えて

2

cursor.execute()の2番目の引数は、クエリのすべてのプレースホルダを埋める値を含むタプルでなければなりません。プレースホルダが1つしかない場合でも、タプルが必要です。だから:

cursor.execute(statement, (jid,)) 
+0

ありがとうBarmar!それはうまくいった、私はそれが簡単だったと信じることができないと私はそれを理解しようとずっと長い間過ごした! : ') –

関連する問題