如何在trac环境中获取票据列表的最大ID?
我正在为trac开发一个小工具脚本,这个脚本需要知道每个环境中最大的票据ID是什么。
目前(使用trac 0.11版本),我直接通过sqlite API从trac数据库中提取这个信息,但因为我们有多个环境,使用不同的数据库系统,所以这个原本简单的小工具脚本变得越来越复杂,做了一些没必要的事情。
在trac.*这个命名空间中,有没有什么方法可以让我找到一个开放环境中最大的票据ID呢?
如果能给我一个包含所有票据的数组,或者一个可以遍历所有票据的生成器,那就能解决我的问题。
我不能使用查询包,因为这是一个自动化的命令行脚本。
2 个回答
1
一种可能的方法是通过 XmlRpcPlugin 来查询 Trac,查询的内容是关于工单的,格式如下:
"order=id&desc&max=1"
显然,这种方法不依赖于具体的数据库,但如果你不能或者不想在你的 Trac 环境中安装额外的插件,那就不适用。
2
为什么你需要为数据库连接写自定义代码呢?因为有一些Trac对象可以帮助你获取数据库连接,这些对象可以让你不用直接接触到实际的数据库后台。
你可以查看一下 Trac数据库API。在0.11版本中,你应该使用 Environment.get_db_cnx()
来获取数据库连接,然后用 .cursor()
方法得到一个 Cursor
对象,接着就可以执行你的查询了。