2013-11-15 6 views
1

У меня есть (может быть очень простой) вопрос, но я не найти решение сам ...Python MySQLDb операция обновления с переменными

База данных включает в себя ссылки. К ним относятся числа. Теперь я хочу вставить в отдельный столбец «nummer» номер, который включен в каждую из ссылок.

Ниже приводится описание для одного номера.

Теперь я хочу использовать цикл для нескольких чисел и извлечь номер из всех ссылок и записать его в поле «Nummer».

Как изменить использование% i или% d?

Заранее благодарим за вашу помощь!

import MySQLdb 

connection = MySQLdb.connect(
    host="192.168.0.101", 
    db='xxxxxxx', 
    user="xxxxxxx", passwd="xxxxxxx" 
    ) 
connection.apilevel = "2.0" 
connection.threadsafety = 2 
connection.paramstyle = "format" 

cursor=connection.cursor() 

sql="UPDATE analysen SET Nummer = 247687 WHERE `Link` like '%247687%'" 
cursor.execute(sql) 
connection.commit() 

ответ

1

Чтобы сделать цикл на несколько номеров, это просто for n in numbers:.

Единственный сложный бит - как параметризовать запрос LIKE. Способ сделать это - поставить в запрос обычный параметр %s, а затем обернуть параметр значение в % символах. Итак:

sql = "UPDATE analysen SET Nummer = %s WHERE Link like %s" 
for n in numbers: 
    cursor.execute(sql, [n, '%{}%'.format(n)]) 

Или:

sql = "UPDATE analysen SET Nummer = %s WHERE Link like %s" 
cursor.executemany(sql, ([n, '%{}%'.format(n)] for n in numbers) 
+0

Большого спасибо за вашу помощь! Он делает именно то, что мне нужно! –

Смежные вопросы