Python sqlite3 db:正确构建数据库。写入数据库时​​跳过第一列。避免仅使用1单元格数据的列

时间:2018-12-01 18:23:01

标签: python sqlite

我有一个python脚本,可将数据写入sqlite3数据库。它有26列,但是其中15列只需要1个单元格数据。

我不想将其包含15列,每个列包含1个数据单元,我只想将它们收集到一个(或两个)列中。我不知道如何使用Sqlite3做到这一点。我在想,也许将所有设置循环打印到前一或两列中,然后从那里写入数据库时​​告诉sqlite3忽略/跳过前几列。有可能吗?

稍后,我将数据库加载到用于sqlite的数据库浏览器中,并导出到csv,然后将它们加载到excel / google doc中。我希望避免从一开始就对其结构进行适当地构造,然后再导入excel / google doc后不必进行大量复制/粘贴。

当前数据库

| 1| Time      | Type  | Price    | Amount  | Gain     | Market    | Option 1 | Acc     | Setting a | Setting b  |
| 2|-----------|-------|----------|---------|----------|-----------|----------|---------|-----------|------------|
| 3| 22:12:15  | Buy   | 660.33   | 0.0130  | 8.58429  | Market 1  | 0.00085  | DD_23   | 0.00233   |     5      |
| 4| 22:12:15  | Sell  | 659.58   | 0.0070  | 4.61706  |           |          |         |           |            |
| 5| 19:36:08  | Buy   | 670.00   | 0.0082  | 5.49400  |           |          |         |           |            |
| 6| 19:36:08  | Sell  | 670.33   | 0.0058  | 3.88791  |           |          |         |           |            |
| 7| 19:36:08  | Buy   | 671.23   | 0.0060  | 4.02738  |           |          |         |           |            |
| 8| 13:01:41  | Sell  | 667.15   | 0.0015  | 1.00073  |           |          |         |           |            |
| 9| 13:01:41  | Buy   | 667.10   | 0.0185  | 12.3414  |           |          |         |           |            |
|10| 07:14:36  | Sell  | 657.55   | 0.0107  | 7.03579  |           |          |         |           |            |
|11| 07:14:36  | Buy   | 657.08   | 0.0005  | 0.32854  |           |          |         |           |            |
|12| 07:14:36  | Sell  | 656.59   | 0.0088  | 5.77799  |           |          |         |           |            |

所需解决方案1:单列解决方案

| 1| Script info | Time      | Type  | Price    | Amount  | Gain     |
| 2|-------------|-----------|-------|----------|---------|----------|
| 3| Market      | 22:12:15  | Buy   | 660.33   | 0.0130  | 8.58429  |
| 4| Market 1    | 22:12:15  | Sell  | 659.58   | 0.0070  | 4.61706  |
| 5| Option 1    | 19:36:08  | Buy   | 670.00   | 0.0082  | 5.49400  |
| 6| 0.00085     | 19:36:08  | Sell  | 670.33   | 0.0058  | 3.88791  |
| 7| Acc         | 19:36:08  | Buy   | 671.23   | 0.0060  | 4.02738  |
| 8| DD_23       | 13:01:41  | Sell  | 667.15   | 0.0015  | 1.00073  |
| 9| Setting a   | 13:01:41  | Buy   | 667.10   | 0.0185  | 12.3414  |
|10| 0.00233     | 07:14:36  | Sell  | 657.55   | 0.0107  | 7.03579  |
|11| Setting b   | 07:14:36  | Buy   | 657.08   | 0.0005  | 0.32854  |
|12| 5           | 07:14:36  | Sell  | 656.59   | 0.0088  | 5.77799  |

所需解决方案2:双列解决方案

| 1| Script info | Script settings | Time      | Type  | Price    | Amount  | Gain     |
| 2|-------------|-----------------|-----------|-------|----------|---------|----------|
| 3| Market      | Market 1        | 22:12:15  | Buy   | 660.33   | 0.0130  | 8.58429  |
| 4| Option 1    | 0.00085         | 22:12:15  | Sell  | 659.58   | 0.0070  | 4.61706  |
| 5| Acc         | DD_23           | 19:36:08  | Buy   | 670.00   | 0.0082  | 5.49400  |
| 6| Setting a   | 0.00233         | 19:36:08  | Sell  | 670.33   | 0.0058  | 3.88791  |
| 7| Setting b   | 5               | 19:36:08  | Buy   | 671.23   | 0.0060  | 4.02738  |
| 8|             |                 | 13:01:41  | Sell  | 667.15   | 0.0015  | 1.00073  |
| 9|             |                 | 13:01:41  | Buy   | 667.10   | 0.0185  | 12.3414  |
|10|             |                 | 07:14:36  | Sell  | 657.55   | 0.0107  | 7.03579  |
|11|             |                 | 07:14:36  | Buy   | 657.08   | 0.0005  | 0.32854  |
|12|             |                 | 07:14:36  | Sell  | 656.59   | 0.0088  | 5.77799  |

1 个答案:

答案 0 :(得分:1)

编辑 [以探索评论中提到的想法]:

您可能无需使用15个列/值来描述选择组,

  • 在python中创建一个字符串来描述选择组。类似于“设置1:值1,设置2:值2,.......设置15:值15”
  • 用一个TEXT列替换15列
  • 为选择组中的每一行插入文本。


我不确定您要解决什么问题。这个

  

...我将数据库加载到用于sqlite的数据库浏览器中,然后导出到csv,然后   将它们加载到excel / google文档中。

向我表明这是一个手动过程。

  

写入数据库时​​,告诉sqlite3忽略/跳过前几个   列。

向我表明您只希望在导出中使用这些列。

  

Time | Type | Price | Amount | Gain

您是否可以编写查询SELECT time,type,price,amount,gain from thetable,然后从结果面板右侧的小图标中选择“导出为CSV”?

也许更简单,如果您要丢弃“ 1-cell数据”,请不要首先加载它们。或者将它们加载到另一个表中(在python端)。

或者我可能不明白这个问题:)