Я пишу рабочий процесс, который сначала преобразует плоский CSV-файл в файл .db для последующей обработки.Файл, кажется, пишет нормально, но когда я пытаюсь прочитать его снова, он выдает ошибки, говорящие, что таблица не существует.Вот мой код:
import pandas as pd
import sqlite3
# simulate some data
df=pd.DataFrame({'DATE':['01-01-2000','01-02-2000','01-03-2000','01-04-2000','01-05-2000'],
'A1':[1,1,1,1,1],
'A2':[1,2,3,4,5],
'B':[2,2,3,3,2]})
df.to_csv('my_test.csv', index=False)
# function to write csv to .db file
def pandas_csv_to_db_converter(csvfile, table_name):
df = pd.read_csv(csvfile)
conn = sqlite3.connect(table_name)
df.to_sql(table_name, conn, if_exists='append', index=False)
return
pandas_csv_to_db_converter('my_test.csv', 'my_test.db')
Пока все хорошо, у меня есть файлы csv и .db одинакового размера.Поэтому я хочу прочитать в таблице, чтобы убедиться, что все в порядке.
def pandas_db_reader(db_file):
conn = sqlite3.connect(db_file)
c = conn.cursor()
c.execute("SELECT name FROM sqlite_master WHERE type='table';")
names = [tup[0] for tup in c.fetchall()]
print(names)
table = pd.read_sql_query("SELECT * from {}".format(db_file), conn)
print(table)
conn.close()
return
out_db = 'my_test.db'
pandas_db_reader(out_db)
Строка 'my_test.db' печатается в виде таблицы в списке на консоли, указывая, что это допустимая таблица., но затем код выдает ошибку:
cur.execute(*args)
sqlite3.OperationalError: no such table: my_test.db
During handling of the above exception, another exception occurred:
cur.execute(*args)
pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT * from my_test.db': no such table: my_test.db
Не очень интуитивно понятно, почему происходит эта ошибка.Я просмотрел довольно много уроков и вопросов о переполнении стека о том, как сделать этот бит, который, кажется, не работает.У меня нет большого опыта использования SQL, поэтому любая помощь будет очень полезна!Заранее спасибо!
РЕДАКТИРОВАТЬ: опечатка отредактирована:
pandas_csv_to_db_converter('my_test.csv', my_test_db.db)
сейчас
pandas_csv_to_db_converter('my_test.csv', 'my_test.db')