2

主キーを次のように宣言しています。

id bigint PRIMARY KEY

特定の ID を抽出して、さらに使用したい。

localid = cursor.fetchone()[0]
print type(localid)
query1 = ("Select * from table_name WHERE id= %d;")
cursor.execute(query1, localid)
query2 = ("Select * from table_name WHERE id= 1;")
cursor.execute(query2)
  1. type(localid)intフェッチされた値がちょうど 2 または 3 または 45 である現在のように出力されます。
  2. query1 は機能しませんが、query2 は機能します。
  3. %d指定子は正しいですか?私はそうは思わない。
  4. フェッチされた数が実際に通常の範囲外である場合int%d正しいでしょうか? そうでない場合、何を使用しますか?

追加情報: Mysql-pythonコネクタ パッケージが使用されています。パイソン 2.7

4

1 に答える 1

1

を使用している場合は、おそらく関数内でMySQLdbのみ必要です。%sexecute

あなたのMysql-pythonMySQLdb確かです。

solution1 `:

query1 = ("Select * from table_name WHERE id= %s;")
cursor.execute(query1, (localid,))

Note: If args is a sequence, then %s must be used as the
      parameter placeholder in the query. If a mapping is used,
      %(key)s must be used as the placeholder.

ソリューション 2 :

query1 = ("Select * from table_name WHERE id= %d;" % localid)
cursor.execute(query1)

での詳細説明Mysqldb.cursors

class BaseCursor(__builtin__.object)
 |  A base for Cursor classes. Useful attributes:
 |  
 |  description
 |      A tuple of DB API 7-tuples describing the columns in
 |      the last executed query; see PEP-249 for details.
 |  
 |  description_flags
 |      Tuple of column flags for last query, one entry per column
 |      in the result set. Values correspond to those in
 |      MySQLdb.constants.FLAG. See MySQL documentation (C API)
 |      for more information. Non-standard extension.
 |  
 |  arraysize
 |      default number of rows fetchmany() will fetch
 |  
 |  Methods defined here:
 |  execute(self, query, args=None)
 |      Execute a query.
 |      
 |      query -- string, query to execute on server
 |      args -- optional sequence or mapping, parameters to use with query.
 |      
 |      Note: If args is a sequence, then %s must be used as the   #notice
 |      parameter placeholder in the query. If a mapping is used,
 |      %(key)s must be used as the placeholder.
 |      
 |      Returns long integer rows affected, if any
 |
于 2015-08-21T09:29:54.437 に答える