无法访问openmdao生成的sqlite数据库密钥

时间:2016-12-09 23:13:46

标签: sqlite openmdao

我正在使用OpenMDAO和普通的omdao记录器解决Unix和Linux中的问题,即在我的基于OpenMDAO的python脚本中:

    from openmdao.api import SqliteRecorder
    recname = 'DLCS_5MW.sqlite'
    recorder = SqliteRecorder(recname)
    top.driver.add_recorder(recorder)

在Unix设置中运行问题后,我可以按预期访问数据库:

    >>> import sqlitedict
    >>> db = sqlitedict.SqliteDict('DLCS_5MW.sqlite','openmdao')
    >>> db.keys()
    ['metadata', 'rank0:Driver/1']

但是当我在Linux设置中运行问题并以相同的方式加载数据库时,我得到了这个:

    >>> db.keys()
    []

即。无钥匙字典。我可以看到sqlite文件本身确实有信息(比如1 GB);我似乎可以访问它。我可以验证问题是文件本身,而不是我正在检查它的操作系统(即我可以在我的Linux设置上成功检查Unix生成的文件,但不能在我的Unix设置上检查Linux生成的文件) 。这让我相信OpenMDAO和sqlite之间存在一些脱节。

最初我认为问题与我的Linux机器上的Python安装(包括sqlite,是吗?)和OpenMDAO安装有关,但我重新安装两者都无济于事(使用Anaconda python)。我试图在OpenMDAO之外发现类似问题 - 只是在一个sqlite上下文中 - 但遗憾的是我不太精通sqlite并且没有能够找到任何有用的东西。任何想法都将不胜感激!

2 个答案:

答案 0 :(得分:1)

很抱歉听到您遇到问题。

我们一直在改变录制案例的方式,这可能就是你遇到问题的原因,但我不知道为什么你会在Linux和Unix上有不同的结果。

我们不再有openmdao表了。这些表现在是metadataiterationsderivs

要查看案例记录是否存在问题,我在Ubuntu系统上安装了OpenMDAO 1.7.3并在http://openmdao.readthedocs.io/en/1.7.3/usr-guide/tutorials/recording.html上运行了示例。

为了查看迭代数据是否在sqlite文件中,我做了:

import sqlitedict
db = sqlitedict.SqliteDict('paraboloid','iterations')
print db.keys()

结果

['rank0:SLSQP|1', 'rank0:SLSQP|2', 'rank0:SLSQP|3', 'rank0:SLSQP|4', 'rank0:SLSQP|5', 'rank0:SLSQP|6']

这有帮助吗?

由于

答案 1 :(得分:0)

对于1.7.1版本似乎也是一个问题,但升级到1.7.3解决了这个问题。另外,我在Python IDE(Spyder,Fedora Linux / Gnome)的工作目录中找到了我的项目记录器sqlite数据库,并且能够通过Sqliteman GUI访问这些表。它使用的是SQL GUI,它显示了openmdao表的存在,因而是我使用旧版本的线索。