есть файл, содержащий данные, которые я хочу вставить в таблицу в mysql с помощью python. Я извлек данные из файла с помощью «с открытым» и преобразовал их в список. Теперь в списке элементы являются строковыми, и я хочу изменить строку в кортеж, чтобы я мог получить данные из этого в mysql.
import mysql.connector
with open("/home/ninky/com.csv", "r") as fp:
content = fp.read()
lines = content.split("\n")
print(lines)
myconn = mysql.connector.connect(host = "localhost", user = "root", database = "EMPSALARY"
cur = myconn.cursor()
db = "insert into PERSON(name,age,year)values(%s,%s,%s)"
myconn = cur.execute(db, lines)
myconn.close()
result:
-----------
['deepak,29,2019', 'ninky,29,2010', 'suraj,29,2020', 'pratap,30,2018', '']
deepak,29,2019
ninky,29,2010
suraj,29,2020
pratap,30,2018
Traceback (most recent call last): File "/home/ninky/PycharmProjects/new/csv_db.py", line 23, in <module> cur.execute(db, lines) File "/usr/local/lib/python3.6/dist-packages/mysql/connector/cursor.py", line 543, in execute "Not all parameters were used in the SQL statement") mysql.connector.errors. ProgrammingError: Not all parameters were used in the SQL statement
Process finished with exit code 1
В строках у вас есть список, содержащий каждую строку вашего файла CSV. Затем вам нужно перебрать все строки и снова разделить разделитель (','):
import mysql.connector
with open("/home/ninky/com.csv", "r") as fp:
content = fp.read()
lines = content.split("\n")
print(lines)
myconn = mysql.connector.connect(host = "localhost", user = "root", database = "EMPSALARY")
cur = myconn.cursor()
db = "insert into PERSON (name,age,year) values (%s,%s,%s)"
for l in lines:
data=l.split(',')
cur.execute(db, data)
myconn.close()
Извините, я ошибся, я отредактировал вопрос. Вы должны удалить myconn= перед cur.execute. попробуй сейчас
Трассировка (последний последний вызов): файл «/home/ninky/PycharmProjects/new/csv_db.py», строка 18, в <module> cur.execute(db, data) File «/usr/local/lib/python3. 6/dist-packages/mysql/connector/cursor.py", строка 540, при выполнении stmt = RE_PY_PARAM.sub(psub, stmt) File "/usr/local/lib/python3.6/dist-packages/mysql /connector/cursor.py", строка 78, в вызов "Недостаточно параметров для оператора SQL") mysql.connector.errors.ProgrammingError: Недостаточно параметров для оператора SQL Процесс завершен с кодом выхода 1
commit отсутствовал, поэтому он не отражался в db. моя вина.
Трассировка (последний последний вызов): Файл "/home/ninky/PycharmProjects/new/csv_db.py", строка 18, в <module> myconn = cur.execute(db, data) Файл "/usr/local/lib/ python3.6/dist-packages/mysql/connector/cursor.py", строка 518, выполняется, если не self._connection: ReferenceError: объект со слабой ссылкой больше не существует Процесс завершен с кодом выхода 1