# raw positional params - if using SQLite. for MySQL, use "%s" instead of "?" q = "INSERT IGNORE INTO network_tbl (nid, name) VALUES " binds = [] q += ', '.join(["(?, ?)" for nid in networks]) binds = zip([nid for nid in networks], [networks[nid]['n'] for nid in networks]) engine.execute(q, binds) # alternatively, just use executemany style: q = "INSERT IGNORE INTO network_tbl (nid, name) VALUES (?, ?)" binds = [(nid, networks[nid]['n']) for nid in networks] engine.execute(q, binds)