Цикл по 2 спискам, чтобы создать несколько SQL-курсоров с 2 изменяющимися переменными в каждом курсоре - PullRequest
1 голос
/ 09 июля 2019

Мне нужно отправить курсор SQL, где каждый курсор обновит строку в столбце lat таблицы.Каждый курсор должен автоматически получить значение для обновления и id строки, которая будет обновлена.

Я пытался использовать для loop и zip, что работает технически, но значения неверны.

Мой код:

list_tu = ["1", "2", "3", "4", "5", "6", "7", "8"]
ids_list = [ '7', '7', '7', '3','5', '7', '3', '2']

        def insert_tu():
            conn = connection_forward_db
            cursor = conn.cursor()        
            for tu, ids in zip(list_tu, ids_list):
                cursor.execute("UPDATE forwarder2000 SET CU = "+tu+" WHERE 
    Product_ID = "+ids+"")
        conn.commit()
    df = pd.read_sql("SELECT * FROM forwarder2000", con=conn)
    print(df)

insert_tu()

ожидаемыйрезультат должен быть "1", "2", "3", "4", "5", "6", "7", "8" в последнем столбце.

Но я получаю 5, 6, 7, 8, 6, 6, 6, 7

Что я делаю не так?

1 Ответ

0 голосов
/ 09 июля 2019

Я бы изменил ваш код для вставки значений с использованием параметра, подобного

 def insert_tu():
        conn = connection_forward_db
        cursor = conn.cursor()        
        for row in zip(list_tu, ids_list):
            cursor.execute("UPDATE forwarder2000 SET CU = %s WHERE Product_ID = %s",row)
    conn.commit()
df = pd.read_sql("SELECT * FROM forwarder2000", con=conn)
print(df)

Но ваш код должен работать, я думаю, в итоге он вообще изменил значения в базе данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...