我正在使用 ubuntu 12.04,我正在尝试编写一个 python 插件来查询 Rhythmbox 数据库。 Rhythmbox 版本是 v2.96,但 v2.97 也会出现此问题。当我执行 python 查询时,Ubuntu 因段错误而崩溃。
我需要确认以下内容是否正确,以及我是否发现了 Ubuntu 特有的错误,或者我是否误解了如何正确查询。如果使用其他发行版的任何其他人可以确认 - 这将是最受欢迎的。
我已经提交了 bug report关于段错误的 bugzilla。但是,我的问题并不是严格意义上的 - 它专门试图确认正确的 python 代码来查询数据。
因此我的问题是:下面的代码片段是否可以正确查询 Rhythmbox 数据库,或者我是否需要安装一个额外的包来启用查询。
步骤:
- 启用 python 控制台插件
- 键入(或逐行复制并粘贴以下内容)
from gi.repository import RB, GLib db = shell.props.db query_model = RB.RhythmDBQueryModel.new_empty(db) query = GLib.PtrArray() db.query_append_params( query, RB.RhythmDBQueryType.EQUALS, RB.RhythmDBPropType.ARTIST, 'some artist name' ) db.query_append_params( query, RB.RhythmDBQueryType.EQUALS, RB.RhythmDBPropType.TITLE, 'some song name' ) db.do_full_query_parsed(query_model, query) for row in query_model: print row[0].get_string( RB.RhythmDBPropType.ARTIST ) print row[0].get_string( RB.RhythmDBPropType.TITLE )
If ubuntu 12.04 when I type this line, Ubuntu crashes with a segmentation fault
db.query_append_params( query, RB.RhythmDBQueryType.EQUALS, RB.RhythmDBPropType.ARTIST, 'some artist name' )
因此,我实际上是否正确使用了调用中的第一个参数 - 查询指针数组 (PtrArray) - 还是我的查询函数参数不正确?
最佳答案
答案是...
好吧,这个问题确实是一个错误——但要回答我自己的问题,
是在 Rhythmbox 中查询数据的语法与问题中所述的一样正确。
但是有一个......
查询数据仅适用于 64 位 linux。
是的,我一直在测试 Fedora 17 和 LMDE 的 32 位 live-cd。两者都表现出与 Ubuntu 12.04 相同的段错误问题。
共同点是我在 Ubuntu 12.04/Fedora 17 和 LMDE 的 32 位版本中进行了测试。
在其 64 位变体中测试所有三个都按预期工作。
32 位问题是一个错误 - 已在 bugzilla 上报告过 - 但所提出的问题已得到解答。
谢谢。
关于python - 如何在 Rhythmbox 中查询数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12133250/