python - 如何使用 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 接受整个系列?
解决方案
推荐阅读
- c++ - 使用数组创建成绩范围
- visual-studio - “附加到进程”不显示在我自己的帐户下运行的 IIS 工作线程
- numpy - 如何找到两条曲线的交点?
- shell - 我可以在不传递参数的情况下直接将 VSTS 构建定义秘密变量(密码变量)访问到 shell 脚本文件中吗?
- linux - Bash:如果工作完成则捕获
- java - “找不到指定的文件”,多次检查并看起来正确
- scala - 使用 Livy 读取在 HDFS 中创建的文件
- mongodb - 如何使用带有 JSR223 采样器的 jMeter 与 MongoDB 建立连接?
- grails - 无法添加 qrcode grails 插件?
- python-3.x - 如何过滤掉熊猫中只是数字而不是完全数字的行?