PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Inserir dicionário Python usando Psycopg2

from psycopg2.extensions import AsIs

song = {
    'title': 'song 1',
    'artist': 'artist 1'
}

columns = song.keys()
values = [song[column] for column in columns]

insert_statement = 'insert into song_table (%s) values %s'

    # cursor.execute(insert_statement, (AsIs(','.join(columns)), tuple(values)))
print cursor.mogrify(insert_statement, (AsIs(','.join(columns)), tuple(values)))

Impressões:
insert into song_table (artist,title) values ('artist 1', 'song 1')

O psycopg adapta uma tuple para um record e AsIs faz o que seria feito pela substituição de string do Python.