Python 如何使用SQLalchemy将timeseries数据插入SQLite?
我正在开发一个应用程序,它从美联储获取财务数据,使用Flask SQlalchemy将其存储在SQlite数据库中,然后将数据提供给我的前端仪表板(Bokeh) 我使用的数据结构如下:Python 如何使用SQLalchemy将timeseries数据插入SQLite?,python,sql,sqlite,sqlalchemy,flask-sqlalchemy,Python,Sql,Sqlite,Sqlalchemy,Flask Sqlalchemy,我正在开发一个应用程序,它从美联储获取财务数据,使用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
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
value = db.Column(db.Float)
在我的SQLalchemy模型中,我尝试按如下方式存储“value”列中的数据:
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
value = db.Column(db.Float)
它当前位于float64数据类型中,但SQLite需要它位于通用Python float类型中(而不是NumPy,即float64)。我尝试将“value”列转换为通用Python浮点值,如下所示:
ValueData = GeneralData['value'].astype(float) #slices the 'value' column from the dataframe
ValueForSQL = Graph(value = ValueData) #stores values in the 'value' column of SQLite table.
但是,我在运行代码时遇到以下错误:“StatementError无法将序列转换为类‘float’。
问题似乎是SQlite无法处理数据系列或数据列表。例如,如果我使用GeneralData['value'].iloc[3],它就可以正常工作。这是因为数据已经是float64格式
SQlite接受这一点,因为它是一个单独的数据点,而不是一个列表或系列然而,“值”是由数千个值组成的列。如何让SQlite接受整个系列 aType仍将转换为float64。将序列转换为列表并将其映射为浮点值如何
list(map(float,GeneralData.value))
这会导致以下错误:“float()参数必须是字符串或数字,而不是‘list’”。我认为问题在于SQLite只接受列中的单个数据点,而不是一次接受所有数据点。我可以上传像GeneralData['value'].iloc[3]这样的特定点,但不能上传GeneralData['value'],因为这被视为一个系列或列表,具体取决于我使用的格式。如何插入值?你也能把它贴出来吗?大容量插入或其他任何操作?
db.session.add(foo)
后跟db.session.commit()
foo将一次包含一个值。如何将列表分配给单个值。查找批量更新或在循环中发送值。如果这有意义的话,在本例中,fo将表示“value”,即序列:GeneralData['value']。然而,SQLite似乎无法下载系列格式的数据。为什么要写两个相同的问题,间隔6小时?你可以编辑你的帖子。