首页 > 解决方案 > 如何使用 SQLalchemy 将时间序列数据导入 SQlite 表

问题描述

我正在开发一个应用程序,它从美联储获取财务数据,使用 Flask-SQlalchemy 将其存储在 SQlite 数据库中,然后将数据提供给我的前端仪表板 (Bokeh)。

我使用的数据结构如下:

         date    realtime_end  realtime_start  value
0     1962-01-02   2018-08-02     2018-08-02   4.06
1     1962-01-03   2018-08-02     2018-08-02   4.03
2     1962-01-04   2018-08-02     2018-08-02   3.99
3     1962-01-05   2018-08-02     2018-08-02   4.02
4     1962-01-08   2018-08-02     2018-08-02   4.03
5     1962-01-09   2018-08-02     2018-08-02   4.05
6     1962-01-10   2018-08-02     2018-08-02   4.07
7     1962-01-11   2018-08-02     2018-08-02   4.08
8     1962-01-12   2018-08-02     2018-08-02   4.08
9     1962-01-15   2018-08-02     2018-08-02   4.10
10    1962-01-16   2018-08-02     2018-08-02   4.13
11    1962-01-17   2018-08-02     2018-08-02   4.12
12    1962-01-18   2018-08-02     2018-08-02   4.11
13    1962-01-19   2018-08-02     2018-08-02   4.11
14    1962-01-22   2018-08-02     2018-08-02   4.09
15    1962-01-23   2018-08-02     2018-08-02   4.11
16    1962-01-24   2018-08-02     2018-08-02   4.10
17    1962-01-25   2018-08-02     2018-08-02   4.11
18    1962-01-26   2018-08-02     2018-08-02   4.11
19    1962-01-29   2018-08-02     2018-08-02   4.12
20    1962-01-30   2018-08-02     2018-08-02   4.11
21    1962-01-31   2018-08-02     2018-08-02   4.10
22    1962-02-01   2018-08-02     2018-08-02   4.09
23    1962-02-02   2018-08-02     2018-08-02   4.08
24    1962-02-05   2018-08-02     2018-08-02   4.07
25    1962-02-06   2018-08-02     2018-08-02   4.06
26    1962-02-07   2018-08-02     2018-08-02   4.07
27    1962-02-08   2018-08-02     2018-08-02   4.07
28    1962-02-09   2018-08-02     2018-08-02   4.05
29    1962-02-12   2018-08-02     2018-08-02    NaN

在我的 SQLalchemy 模型中,我试图存储“值”列中的数据,如下所示:

value = db.Column(db.Float()) 

它目前是 float64 数据类型,但 SQLite 需要它是一个通用的 Python 浮点类型(而不是 NumPy,它是 float64)。我正在尝试将“值”列转换为通用 Python 浮点值,如下所示:

ValueData = GeneralData.iloc[:,3].apply(float) #slices the 'value' column from the dataframe 

ValueForSQL = Graph(value = ValueData) #stores values in the 'value' column of SQLite table.

但是,在运行代码时出现以下错误:“StatementError 无法将系列转换为”。

我怀疑我的错误来自这一行:

ValueData = GeneralData.iloc[:,3].apply(float) #slices the 'value' column from the dataframe 

我在将此数据系列转换为浮点值时采取了错误的方法吗?

编辑:

问题似乎是 SQlite 无法处理数据系列或列表。例如,如果我使用 GeneralData['value'].iloc[3],它可以正常工作。这是因为数据已经是 float64 格式。SQlite 接受这一点,因为它是一个单独的对象,而不是一个列表或系列。但是,“值”是包含数千个值的列。如何让 SQlite 接受整个系列?

标签: pythonpandassqlalchemy

解决方案


推荐阅读