2011-07-19 10 views
6

pgdb modülünü kullanarak Python'dan PostgreSQL'e insert ifadelerini çalıştırmaya çalışıyorum.pgdb.executemany nasıl kullanılır?

Ben belgelerine diyor bakın:

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

Bu ? işaret, bana bir hata veriyor:

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

yüzden gibi şeyler deniyorum. Bu tür parametreli sorgu için doğru sözdizimi nedir? Ayrıca, bu belgelerde varsa, onu nerede bulabilirim?

cevap

6

Eğer dbapi sürücüsü tarafından desteklenen parametre eklenmesi için stil

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

paramstyle modül düzeyinde sabit ile bulunabilir istiyorum. PEP 249 (aka piton veritabanı API 2 belirtimi) göre:

dize parametredir işaretleyici tipini belirten arayüz tarafından beklenen biçimlendirme. Olası değerler [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' 

ve pgdb işaretlerseniz, göreceksiniz ki

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