【问题标题】:Python - Insert 300 variables into SQLitePython - 将 300 个变量插入 SQLite
【发布时间】:2018-11-11 04:57:49
【问题描述】:

我每分钟从热传感器接收 300 个值。这 300 个值需要插入到 SQLite 数据库中,因为它们每分钟都会收到。

我在 SQLite 数据库中创建了 302 行,第一列是 S_ID,第二列是 timestamp。这里,S_ID 每次添加一行时都会自动递增,timestamp 列的默认值是当前系统时间。我已经编程,每分钟接收 300 个热传感器值,将所有 300 个值放入名为 data 的列表中,然后将 data 插入数据库。现在,我需要知道如何编写executemany 语句而不写下所有300 个列名和?

data = [(300, 2, 4, ..., 5.5)] #these are 300 values that are inserted into a list when received from heat sensor
c.executemany('INSERT INTO heat_table (col3, col4, ..., col302) VALUES (?, ?, ..., ?)', data)

【问题讨论】:

  • 最佳实践是始终明确列出插入中涉及的列。虽然可能有一种方法可以在不命名列的情况下执行此操作,但如果您的表结构发生变化,它可能会中断。
  • 编写代码来创建插入查询,而不是手动输入。
  • 或者使用不需要 300 列的数据库设计。每分钟每个传感器一行的东西?
  • 通常您会为每个传感器值写入一个 ,而不是在您的数据库中有 300 个
  • 您的列的实际名称是什么?

标签: python database sqlite insert bulkinsert


【解决方案1】:

我会用列表推导创建这些名称,然后加入它们:

query = ('INSERT INTO heat_table (' +
         ', '.join('col%d' % i for i in range(3, len(data) + 3)) +
         ') VALUES (' +
         ', '.join('?' * len(data)) +
         ')')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2013-08-15
    • 2012-02-07
    相关资源
    最近更新 更多