#python #mysql #csv
#python #mysql #csv
Вопрос:
У меня есть csv, который импортируется из url и помещается в базу данных, однако он импортируется с кавычками вокруг имен и идентификаторов, которые нужно удалить. Исходный формат файла csv
"Apple Inc.",113.08,113.07
"Alphabet Inc.",777.61,777.30
"Microsoft Corporation",57.730,57.720
код, который у меня есть в настоящее время, выглядит следующим образом.
def csv_new(conn, cursor, filename):
with open(filename, 'rt') as csv_file:
csv_data = csv.reader(csv_file)
for row in csv_data:
if(not row[0][0].isdigit()):
continue
split = [int(x) for x in row[0].split('/')]
row[0] = datetime.datetime(split[2], split[0],
split[1]).date().isoformat()
print(row);
cursor.execute('INSERT INTO `trade_data`.`import_data`'
'(date, name, price) VALUES(%s, "%s", %s)',
row)
conn.commit()
окончательная база данных выглядит следующим образом
Name | Price1| Price 2|
'Apple Inc.' 113.08 113.07
'Alphabet Inc.' 777.61 777.30
'Microsoft Corporation' 57.730 57.720
и я бы хотел, чтобы это выглядело так
Name | Price1| Price 2|
Apple Inc. 113.08 113.07
Alphabet Inc. 777.61 777.30
Microsoft Corporation 57.730 57.720
Я попытался использовать для строки в csv.reader(new_data.splitlines(), delimiter=’, skipinitialspace=True): но он выдавал ошибки
Комментарии:
1. В этом коде слишком много ошибок, чтобы понять, что происходит. Как насчет рабочего примера, который считывает csv, а затем печатает то, что вы обычно добавляете в базу данных?
2. Как вы печатаете данные из базы данных? Действительно ли в поле есть кавычки или мы просто видим строковое отображение данных в кавычках? Например, в python, если
print('("Apple Inc.", 113.08, 113.07)')
я получаю строку repl, содержащую кавычки, даже если их нет в самой строке (("Apple Inc.", 113.08, 113.07)
) .3. строка содержит кавычки, которые я не печатаю в python, я импортирую их в базу данных sql.
4. отредактировано для использования рабочего кода te
Ответ №1:
csv.reader
удаляет кавычки правильно. Возможно, вы просматриваете строковое представление текста в кавычках вместо фактического текста.
>>> new_data = '''"Apple Inc.",113.08,113.07
... "Alphabet Inc.",777.61,777.30
... "Microsoft Corporation",57.730,57.720'''
>>>
>>> import csv
>>>
>>> for row in csv.reader(new_data.splitlines()):
... print(','.join(row))
...
Apple Inc.,113.08,113.07
Alphabet Inc.,777.61,777.30
Microsoft Corporation,57.730,57.720
>>>
Комментарии:
1. проблема возникает, когда я импортирую его в SQL, вокруг него есть кавычки.
Ответ №2:
Понял это, проблема заключалась в том, что, как упоминал tdelaney, кавычки не были в строке, в которой это был python, поэтому мое изменение значения в
cursor.execute('INSERT INTO `trade_data`.`import_data`'
'(date, name, price) VALUES(%s, "%s", %s)',
row)
%s вместо «%s» исправил проблему и удалил лишние кавычки.