Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从sqlite db获取对象项?_Python_Sqlite - Fatal编程技术网

Python 如何从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,只使用转换器 简单地

我正在寻找一种从sqlite db获取自定义对象的简单而高效的方法。
有一些模块提供类似的功能,如
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可以识别的字符串,那么查询元数据将很困难,这就是我想要表达的。因此我只想制作一个特殊的转换器,仅用于将检索到的数据强制转换为类。但我不知道如何在低级别实现转换器。