Я пытаюсь создать базу данных sqlite из файла CSV.После некоторого поиска кажется, что это возможно, используя pandas df.Я пытался следовать некоторым учебникам и документации, но я не могу понять эту ошибку.Вот мой код:
# Import libraries
import pandas, csv, sqlite3
# Create sqlite database and cursor
conn = sqlite3.connect('test.db')
c = conn.cursor()
# Create the table of pitches
c.execute("""CREATE TABLE IF NOT EXISTS pitches (
pitch_type text,
game_date text,
release_speed real
)""")
conn.commit()
df = pandas.read_csv('test2.csv')
df.to_sql('pitches', conn, if_exists='append', index=False)
conn.close()
Когда я запускаю этот код, я получаю следующую ошибку:
sqlite3.OperationalError: table pitches has no column named SL
SL - это первое значение в первой строке в моем файле CSV.Я не могу понять, почему он смотрит на значение csv как имя столбца, если только он не думает, что первая строка csv должна быть заголовками и пытается сопоставить это с именами столбцов в таблице?Я тоже не думаю, что это так, потому что я попытался изменить первое значение на фактическое имя столбца и получил ту же ошибку.
РЕДАКТИРОВАТЬ:
Когда у меня есть заголовки в CSV, фрейм данных выглядит следующим образом:
pitch_type game_date release_speed
0 SL 8/31/2017 81.9
1 SL 8/31/2017 84.1
2 SL 8/31/2017 81.9
... ... ... ...
2919 SL 8/1/2017 82.3
2920 CU 8/1/2017 78.7
[2921 rows x 3 columns]
, и я получаю следующую ошибку:
sqlite3.OperationalError: table pitches has no column named game_date
Когда я беру заголовки из файла csv:
SL 8/31/2017 81.9
0 SL 8/31/2017 84.1
1 SL 8/31/2017 81.9
2 SL 8/31/2017 84.1
... .. ... ...
2918 SL 8/1/2017 82.3
2919 CU 8/1/2017 78.7
[2920 rows x 3 columns]
и я получаю следующую ошибку:
sqlite3.OperationalError: table pitches has no column named SL
РЕДАКТИРОВАТЬ # 2:
Я пытался полностью исключить создание таблицы из кода, для этого ответа ,со следующим кодом:
# Import libraries
import pandas, csv, sqlite3
# Create sqlite database and cursor
conn = sqlite3.connect('test.db')
c = conn.cursor()
df = pandas.read_csv('test2.csv')
df.to_sql('pitches', conn, if_exists='append', index=False)
conn.close()
и все еще получаю ошибку
sqlite3.OperationalError: table pitches has no column named SL
РЕДАКТИРОВАТЬ # 3:
Я изменил код создания таблицына следующее:
# Create the table of pitches
dropTable = 'DROP TABLE pitches'
c.execute(dropTable)
createTable = "CREATE TABLE IF NOT EXISTS pitches(pitch_type text, game_date text, release_speed real)"
c.execute(createTable)
и это работает сейчас.Не уверен, что именно изменилось, так как для меня это выглядит в основном так же, но это работает.