无法访问 openmdao 生成的 sqlite 数据库密钥
Unable to access openmdao-generated sqlite database keys
我正在使用 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 生成的文件,但不是 Linux -在我的 Unix 设置上生成的文件)。这让我相信 OpenMDAO 和 sqlite 之间存在一些脱节。
最初我以为问题与 Python 安装(包括 sqlite,是吗?)和 Linux 机器上的 OpenMDAO 安装有关,但我重新安装了这两个以无济于事(使用 Anaconda python)。我试图在 OpenMDAO 之外找到类似问题的发生——只是在 sqlite 上下文中——但不幸的是,我对 sqlite 不是很精通,也无法找到任何有用的东西。如有任何想法,我们将不胜感激!
得知您遇到问题,我们深感抱歉。
我们一直在改变记录案例的方式,所以这可能就是您遇到问题的原因,但我不知道为什么您在 Linux 和 Unix 上会有不同的结果。
我们没有 openmdao
table 了。 table 现在是 metadata
、iterations
和 derivs
。
为了查看案例记录是否存在问题,我在 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.7.1 版本的问题,但升级到 1.7.3 版本解决了这个问题。此外,我在 Python IDE(Spyder、Fedora Linux/Gnome)的工作目录中找到了我项目的记录器 sqlite 数据库,并且能够通过 Sqliteman GUI 访问 tables .它使用 SQL GUI 揭示了 openmdao table 的存在,因此这是我使用旧版本的线索。
我正在使用 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 生成的文件,但不是 Linux -在我的 Unix 设置上生成的文件)。这让我相信 OpenMDAO 和 sqlite 之间存在一些脱节。
最初我以为问题与 Python 安装(包括 sqlite,是吗?)和 Linux 机器上的 OpenMDAO 安装有关,但我重新安装了这两个以无济于事(使用 Anaconda python)。我试图在 OpenMDAO 之外找到类似问题的发生——只是在 sqlite 上下文中——但不幸的是,我对 sqlite 不是很精通,也无法找到任何有用的东西。如有任何想法,我们将不胜感激!
得知您遇到问题,我们深感抱歉。
我们一直在改变记录案例的方式,所以这可能就是您遇到问题的原因,但我不知道为什么您在 Linux 和 Unix 上会有不同的结果。
我们没有 openmdao
table 了。 table 现在是 metadata
、iterations
和 derivs
。
为了查看案例记录是否存在问题,我在 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.7.1 版本的问题,但升级到 1.7.3 版本解决了这个问题。此外,我在 Python IDE(Spyder、Fedora Linux/Gnome)的工作目录中找到了我项目的记录器 sqlite 数据库,并且能够通过 Sqliteman GUI 访问 tables .它使用 SQL GUI 揭示了 openmdao table 的存在,因此这是我使用旧版本的线索。