(TypeError: Невозможно неявно преобразовать объект 'int' в str) при загрузке данных в таблицу с использованием среды python - PullRequest
0 голосов
/ 13 февраля 2020

Age и phone_num являются значениями типа int, все являются строками. при попытке сделать sh это в БД с помощью кода ниже я получаю следующую ошибку

insert_query = "insert into employee.details (name,emp_id,age,contact,address) values('"+name+"','"+emp_id+"',"+age+","+phone_num+",'"+address+"')"
    cursor = connection.cursor
    result = cursor.execute(insert_query)
    print("Table updated successfully ")

1 Ответ

0 голосов
/ 13 февраля 2020

Я думаю, что вы получили эту ошибку, потому что python не может объединять целые числа и строки, если они не были явно преобразованы с использованием str()

Я предполагаю, что вы используете SQLite3? Если это так, то здесь правильный синтаксис для запроса.

insert_query = """INSERT INTO employee.details (name, emp_id, age, contact, address) VALUES (?, ?, ?, ?, ?)""" 

cur = conn.cursor()
cur.execute(insert_query, (name, emp_id, age, phone_num, address))

one_row = cur.fetchone()  # This will only get one row of the data
all_data = cur.fetchall()  # This will get all rows of data in a list of tuples

conn.commit()
conn.close()  # only if this is last db change

Создание шаблонов в вашем запросе с использованием кортежа автоматически экранирует строки и предотвращает SQL внедрение . Он также преобразует ваши целые числа в строки, исправляя вашу ошибку.

...