/ / Оновлення декількох рядків SQLite заданих стовпців і даних - python, python-2.7, sqlite

Оновлення декількох рядків SQLite з зазначенням стовпців та даних - python, python-2.7, sqlite

Я хотів би мати можливість оновити кілька SQLiteрядки баз даних надають список стовпців і список списків даних. У мене є робоче рішення, але це зовсім не елегантно. Як я можу це зробити більш ефективно. UPDATE заяву, оскільки я зосереджуюся лише на побудові запиту.

def update(columns, values):
for value in values:
print ("Update myTable SET " + " ".join([x + " = "%s"," for x in columns]) + " WHERE SSN = "%s"").replace(", WHERE", " WHERE") % (tuple(value))

columns = ["Name", "Age"]
values  = [["Jon", 12, "545-45-7987"], ["Sam", 13, "454-78-4545"]]

update(columns, values)

Відповіді:

2 для відповіді № 1

Ви не повинні інтерполювати значення для вашого UPDATE; скоріше, ви повинні використовувати заповнювачі та параметри запиту. Це дозволить уникнути цитування ускладнень і потенційних уразливостей ін'єкції SQL. Щось на зразок:

def update(cursor, columns, values):
for value in values:
sql = "UPDATE myTable SET {} WHERE ssn = ?".format(
", ".join(map("{} = ?".format, columns)))
print(sql)
cursor.execute(sql, values)

columns = ["Name", "Age"]
values  = [["Jon", 12, "545-45-7987"], ["Sam", 13, "454-78-4545"]]
cursor = conn.cursor()
update(cursor, columns, values)