【问题标题】:Python Sqlite3 get value from table, like a dictionaryPython Sqlite3 从表中获取值,就像字典一样
【发布时间】:2021-01-28 15:31:55
【问题描述】:

我有一个数据库,其中的值存储在 .db 文件中。 [UUID:整数]

1e1f3e6e-c6e6-4897-8bb8-d732a1f5b303 : 12

2b0978c1-3f5b-4c7e-9151-231e0a21d2e3 : 128

4eba65c7-b02f-4627-8205-172333951d39 : 1

4baa130f-fe5b-45c7-9a44-842a6544d4a9 : 73

99fc3095-0aaa-4b19-aa2e-65b027bfd6ad : 7342

我想使用 UUID 来获取整数,就像在字典中一样。例如mydatabase["99fc3095-0aaa-4b19-aa2e-65b027bfd6ad"] 将返回 7342。到目前为止,我所看到的有关获取值的所有内容都不能以这种方式工作。

【问题讨论】:

  • UUID : INTEGER 是两列还是一列?
  • 你可以让mydatabase 成为一个自定义对象,当它传递一个这样的字符串时,它会在后台执行一些 sql 调用,我想。或者,如果您可以使用 mydatabase('uid') 使其成为一个函数,那就更容易了
  • 它们在不同的列中
  • 您是否尝试过使用where 子句?
  • 我想我有一些工作,但它返回 而不是

标签: python sql sqlite


【解决方案1】:

你可以轻松实现这样的类。

class DBMap:
    def __del__(self):
        self.conn.close()

    def __init__(self):
        self.conn = sqlite3.connect('map.db')

    def __getitem__(self, uuid):
        val = self.conn.execute(
            'select val from m where uuid = ?', (uuid,)
        ).fetchone()
        if val:
            return val[0]
        else:
            raise KeyError

__init__ 上,建立与数据库的连接,并在__del__eted 时关闭。 __getitem__ 是实现self[key] 的评估。因此,您可以执行以下操作:

dbm = DBMap()
print(dbm['aaa'])

这是我使用的.schema

create table m (
    uuid TEXT NOT NULL UNIQUE,
    val  INTEGER
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多