Python 如何从sqlite db获取对象项?
我正在寻找一种从sqlite db获取自定义对象的简单而高效的方法。Python 如何从sqlite db获取对象项?,python,sqlite,Python,Sqlite,我正在寻找一种从sqlite db获取自定义对象的简单而高效的方法。 有一些模块提供类似的功能,如sqlobject 但我的目的很简单: 我想用常规sql语句保存数据,如cur.execute(“创建表点(x整数,y整数)”) 并通过当前执行('从点选择x,y作为“p[Point]”)获取数据。, 然后,cur.fetchone()[0]将返回一个点对象。 Sqlite官方文档有一种保存和检索对象的方法。 他们为Point类注册了一个适配器和一个转换器,该类不符合我的aim,只使用转换器 简单地
有一些模块提供类似的功能,如
sqlobject
但我的目的很简单:
我想用常规sql语句保存数据,如
cur.execute(“创建表点(x整数,y整数)”)
并通过当前执行('从点选择x,y作为“p[Point]”)获取数据。,
然后,
cur.fetchone()[0]
将返回一个点
对象。Sqlite官方文档有一种保存和检索对象的方法。
他们为Point类注册了一个适配器和一个转换器,该类不符合我的aim,只使用转换器
简单地说,我不想在sqlite中注册适配器。注册自定义类型会使查询元数据变得困难,所以我只想在检索数据时将数据转换为自定义类型。当然,我可以在获取数据后使用自定义函数将它们放入自定义对象中。但我认为这种方法不是那么简单和高效
那么,简单而有效地解决这个问题的最佳方法是什么呢?请使用。Python有几种可用的方法。值得注意的一点是。如果您发现手册中的章节难以理解,则任何其他机构都会更加复杂。道格·赫尔曼(Doug Hellmann)的《本周最佳Python方法》涵盖了
sqlite3
,您可能会觉得这很有帮助。您昨天问了一个类似的问题,我们无法让您真正理解它。举个例子,改变它们,打破它们,从中学习,你最终会理解它。理解sqlite3类适配器没有捷径。@msw您提供的示例非常有用,谢谢。但我不想在sqlite中注册类型。注册自定义类型会使查询元数据变得困难,所以我只想在检索数据时将数据转换为自定义类型。当然,我可以在获得数据后使用自定义函数将它们放入自定义对象中。但我认为这种方法不是那么简单和高效。您要注册的类型不是sqlite,而是Python和sqlite之间的接口。根据Python手册,x
和y
是两个简单的int列,检索时将其转换为点
-类。按照手册注册类型不会改变sqlite库或数据库-适配器和转换器仅存在于设置适配器和转换器的Python模块中(以及加载所述模块的相关模块)。@MrGumble是的,你是对的。我的表达式不太合适,这是适配器而不是类型。作为官方示例,适配器将class对象更改为sqlite db可以识别的字符串,那么查询元数据将很困难,这就是我想要表达的。因此我只想制作一个特殊的转换器,仅用于将检索到的数据强制转换为类。但我不知道如何在低级别实现转换器。