Задать вопрос

Почему при запросе в python mysql бд выдает ошибку?

Нужно было переделать с sqlite на mysql запросы в python, для sqlite всё работало, ? менял на %s, не помогало. использую библиотеку mysql-connector-python
def write_groups(self,groups):
        groups_list = [[i[0],i[1]] for i in groups]
        #try:

        self.cursor.executemany("INSERT INTO groups (name,image) VALUES (?,?)",groups_list)
        self.mysql_connection.commit()
        print("успешно")
        exit()
        #except:
            #pass

В случае этого запроса parent_id остается null, поэтому него не использую, пробовал писать, в запрос его как ,None значение, не помогло
Код таблицы баз данных
CREATE TABLE `groups` (
  `id_group` INTEGER NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(20) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `image` BLOB,
  `parent_id` INTEGER DEFAULT NULL,
  PRIMARY KEY USING BTREE (`id_group`)
) ENGINE=InnoDB
ROW_FORMAT=DYNAMIC CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci'
;

при строке
self.cursor.executemany("INSERT INTO groups (name,image) VALUES (%s,%s)",groups_list)

ошибка
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups (group_name,image) VALUES ('asdasd','?\??\?\0JFIF\0\0`\0`\0\0??\0<CRE' at line 1

а при строке
self.cursor.executemany("INSERT INTO groups (name,image) VALUES (?,?)",groups_list)

Код ошибки такой:
mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement
  • Вопрос задан
  • 142 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
В MySQL 8.0.2 и выше GROUPS - зарезервированное слово. Если хотите так назвать таблицу или колонку, надо брать название в обратные апострофы - `groups`.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы