Вставляет не все данные из json в mysql

Рейтинг: 0Ответов: 1Опубликовано: 19.02.2023
data = a.json()
names = [item["name"] for item in data["organizations"]]
leaders_name = [item["leader_name"] for item in data["organizations"]]
leader_discord_id = [item["leader_discord_id"] for item in data["organizations"]]
leader_vk = [item["leader_vk"] for item in data["organizations"]]
x = {
    'name': names,
    'leader_name': leaders_name,
    'leader_discord_id': leader_discord_id,
    'leader_vk': leader_vk
}
mydb = mysql.connector.connect(
        host="",
        user="",
        password="",
        database="",
        )
curs = mydb.cursor()
curs.execute('DELETE FROM vktest')
for i in range(len(names)):
    if "id" in leader_vk[i]:
        vk12 = leader_vk[i].split("|")[0].replace("https://vk.com/", "")
        sqlFormula = 'INSERT INTO vktest (names, leader_name, leader_discord_id, leader_vk) VALUES (%s, %s, %s, %s)'
        values = (names[i], leaders_name[i], leader_discord_id[i], vk12)
        curs.execute(sqlFormula, values)
mydb.commit()

Ответы

▲ 1Принят

Проблема может быть связана с тем, что некоторые значения, которые пытаетесь вставить в базу данных, могут быть пустыми.INSERT может пропустить некоторые строки. Попробуй добавить проверку на наличие значений перед выполнением INSERT.

for i in range(len(names)):
    if "id" in leader_vk[i]:
        vk12 = leader_vk[i].split("|")[0].replace("https://vk.com/", "")
    else:
        vk12 = ""
    if names[i] and leaders_name[i] and leader_discord_id[i] and vk12:
        sqlFormula = 'INSERT INTO vktest (names, leader_name, leader_discord_id, leader_vk) VALUES (%s, %s, %s, %s)'
        values = (names[i], leaders_name[i], leader_discord_id[i], vk12)
        curs.execute(sqlFormula, values)
mydb.commit()

Если это не поможет, то надо делать отладку коду, возможно что-то введено неверно