Pandas объединить только новые данные в базе данных SQLite - PullRequest
0 голосов
/ 13 апреля 2020

Я абсолютный новичок ie в SQL и только начал работать с ним. У меня есть база данных SQLite с ценами на акции и их датами.

Используя API, я затем читаю новейшие цены на акции и хочу обновить свою базу данных и добавить только новые цены с новыми датами. Но я хочу сохранить старые в базе данных. Я получаю их из API как pandas фрейм данных. Мой API возвращает дубликаты, и я не хочу иметь дубликаты в моей базе данных.

Я использую Python 3.6 и sqlite3 в качестве движка.

Вот один пример набора данных из данных:

                     1. open  2. high  3. low  4. close  5. volume
date                                                              
2020-04-09 16:00:00  571.925   573.01  571.73    573.01   117287.0
2020-04-09 15:59:00  572.000   572.00  571.45    572.00    56954.0
2020-04-09 15:58:00  571.450   572.00  571.28    571.90    63987.0
2020-04-09 15:57:00  571.560   572.00  571.26    571.42    50978.0
2020-04-09 15:56:00  570.990   571.61  570.58    571.49    30975.0

Я устал от предложенного решения от https://www.ryanbaumann.com/blog/2016/4/30/python-pandas-tosql-only-insert-new-rows. Но я получаю сообщение об ошибке:

KeyError: Index(['date'], dtype='object')

Используется код:

df_new=clean_df_db_dups(data, tablename, conn, ['date'])
print('New:',df_new.head())

Любая помощь будет полезна. Это всего лишь мой второй пост Stackoverflow, так что если я делаю что-то не так, просто скажите мне;).

1 Ответ

1 голос
/ 13 апреля 2020

Вы можете использовать pd.to_ sql, у которого есть параметр с именем if_exists, который ожидает поведения, если таблица уже существует в базе данных, вы можете использовать if_exists="append", и если у вас уже есть к таблице будет просто добавлен фрейм данных pandas.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...