2011-07-19 1 views
6

私は、pgdbモジュールを使ってPythonからPostgreSQLへのinsertの文を実行しようとしています。pgdb.executemanyの使い方は?

私はドキュメントが言う見

cursor.executemany(query, list of params) 
    # Execute a query many times, binding each param dictionary 
    # from the list. 

だから私のような事をしようとしている:

>>> insert = "insert into foo (name, number) values (?,?);" 
>>> params = [{ 'name': 'John', 'number': 123 }, { 'name': 'Jack', 'number': 234 }] 
>>> cursor.executemany(insert, params) 

これは?を指して、私にエラーを与えています。この種のパラメータ化されたクエリの正しい構文は何ですか?また、ドキュメントに記載されている場合は、どこで見つけることができますか?あなたはDBAPIドライバでサポートされるパラメータの包含のためのスタイル

insert = "insert into foo (name, number) value (%(name)s, %(number)s);" 

をしたい

答えて

6

paramstyleモジュールレベルの定数を見つけることができます。 PEP 249(別名パイソンデータベースAPI仕様2)によれば:

文字列定数は、パラメータマーカー のタイプを記述するインタフェースが期待書式。可能な値は [2]:

'qmark'   Question mark style, 
       e.g. '...WHERE name=?' 
'numeric'  Numeric, positional style, 
       e.g. '...WHERE name=:1' 
'named'   Named style, 
       e.g. '...WHERE name=:name' 
'format'  ANSI C printf format codes, 
       e.g. '...WHERE name=%s' 
'pyformat'  Python extended format codes, 
       e.g. '...WHERE name=%(name)s' 

、あなたがPGDBをチェックすると、あなたはわかりますその

>>> import pgdb 
>>> pgdb.paramstyle 
'pyformat'