вставка списка в определенный столбец с использованием Python

0

У меня есть база данных, где есть два столбца sess_id и данные. Теперь я хочу вставить список из py в db, как я должен это делать. предположим, что это список, который нужно вставить в столбец данных списка. database_list = ['elem1', 'elem2', 'elem3'...]

это то, что сделали, но не прогресс:

    cursor_three=conn.cursor()
    cursor_three.execute('INSERT INTO table (data) VALUES (database_list)') 
    cursor_three.commit()  
Теги:
list

2 ответа

0

Вы должны перечислить список следующим образом:

cursor_three=conn.cursor()
for elem in database_list:
    cursor_three.execute('INSERT INTO table (data) VALUES (%s)' % elem) 
cursor_three.commit()  

После этого у вас будет пустой столбец sess_id, если вы не объявите строку автоинкремента. Если у вас есть два отсортированных массива, например

database_id_list = [212, 444, 532...]
database_data_list= ['elem212','elem444','elem532'...]

Вы должны использовать функцию zip() для одновременного итерации, например:

for elem in zip(database_id_list, database_data_list):
    cursor_three.execute('INSERT INTO table (sess_id, data) VALUES (%s, %s)' % elem)  # elem is tuple here

Обратите внимание, что этот код использует функцию string fromat для простоты (вы не заметили, какую базу данных вы используете), и она не защищена от SQL-инъекций. Вам лучше использовать ваш форматировщик sql, например, для psycopg2:

cursor_three.execute('INSERT INTO table (data) VALUES (%s)', [elem])
  • 0
    mysql.connector.errors.ProgrammingError: 1054 (42S22): неизвестный столбец «легко» в «списке полей»
  • 0
    просто мой element1 здесь ...
Показать ещё 2 комментария
0

Зависит от того, что вы хотите сделать. Если вы хотите вставить список значений в один столбец, вы можете прокручивать список и вставлять строки за строкой. Вы также можете использовать executeemany вместо execute.

Если вы непосредственно вводите список, используйте excutemany, иначе, если вы перебираете список, используйте execute.

cursor.executemany("""
              INSERT INTO table
              (data)
              VALUES (?)
              """, data_list)

ИЛИ ЖЕ

for i in data_list:
    cursor.execute("INSERT INTO table (data) VALUES (?)", i)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню