【问题标题】:Python TinyDB Get last record in dbPython TinyDB 获取数据库中的最后一条记录
【发布时间】:2018-03-20 13:43:24
【问题描述】:

我正在尝试从 tinyDB 中获取最后一条记录,所以我想进行如下查询: "SELECT * FROM table ORDER BY id DESC LIMIT 1" 这应该给我最后一行。虽然我不知道如何使用 TinyDB。

【问题讨论】:

    标签: python tinydb


    【解决方案1】:

    如果您想按时间降序对 db 进行排序,例如:

    od = sorted(db.all(), key=lambda k: k['time'])
    print(od[-1])
    

    【讨论】:

      【解决方案2】:

      怎么样:

      table = db.table('table_name')
      table.get(doc_id=len(table))
      

      doc_idhere的方式

      【讨论】:

      • 如果您删除了某些内容,则不应比较 doc_id 值和 len(table)。如果你有{"1":{...}, "2":{...}, "3":{...}} 如果你有:t.remove(doc_ids=[2]) 你得到:{"1":{...}, "3":{...}}
      【解决方案3】:

      使用Query 并进行更新:

      with TinyDB('db.json') as db:
          my_table = db.table('a_table_name')
          my_query= Query()
          first_of_table_for_this_query = my_table.search(my_query.some_field == some_value)[1]
          last_of_table_for_this_query = my_table.search(my_query.some_field == some_value)[-1]
          # exemple of use for updating first inserted and last inserted only
          my_table.update({'some_field': some_value+42}, doc_ids=[
              first_of_table_for_this_query,
              last_of_table_for_this_query
          ])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-06
        • 2017-01-02
        • 2019-12-28
        相关资源
        最近更新 更多