Отправка данных в MySQL aiogram
Я создаю телеграм бота, который получает определённые данные в users, но когда я их пытаюсь таким образом засунуть в бд
def paste_user(user, connection):
create_users = "INSERT INTO `users`(`uni`, `department`, `direction`, `subject`, `type_work`, `date`) VALUES ('"+user['uni']+"','"+user['department']+"','"+user['direction']+"','"+user['subject']+"','"+user['type_work']+"','"+user['date']+"')"
execute_query(connection, create_users)
мне выдает вот такую вот ошибку:
create_users = "INSERT INTO users(uni, department, direction, subject, type_work, date) VALUES ('"+user['uni']+"','"+user['department']+"','"+user['direction']+"','"+user['subject']+"','"+user['type_work']+"','"+user['date']+"')"
TypeError: list indices must be integers or slices, not str
Если я не делаю конкатенацию строк и не указываю id то всё работает корректно, подскажите пожалуйста в чем проблема.
Вот сама таблица:
CREATE TABLE IF NOT EXISTS users (
id INT NOT NULL AUTO_INCREMENT,
uni TEXT,
department TEXT,
direction TEXT,
subject TEXT,
type_work TEXT,
date TEXT,
PRIMARY KEY (id)
) ENGINE = InnoDB
При помощи этой функции выполняю все манипуляции с бд
def execute_query(connection, query):
cursor = connection.cursor()
try:
cursor.execute(query)
connection.commit()
print("Query executed successfully")
except Error as e:
print(f"The error '{e}' occurred")
Ответы (1 шт):
Попробуйте так. Это хотя бы выведет ошибку понятнее, и вы сможете её отследить.
def paste_user(user, connection):
create_users = f"INSERT INTO `users`(`uni`, `department`, `direction`, `subject`, `type_work`, `date`) VALUES ({user['uni']},{user['department']},{user['direction']},{user['subject']},{user['type_work']},{user['date']})"
execute_query(connection, create_users)