我正在使用Python的peewee模块构建数据库接口。我试图弄清楚如何将数据插入到我不知道架构的现有数据库中。
我的想法是使用playhouse.reflection.Introspector找出数据库模式,然后使用该信息创建类对象,然后将其插入到现有数据库中。
到目前为止,我已经到了:
introspector = Introspector.from_database(database)
models = introspector.generate_models()
我不知道从那里去哪里。
1)我可以用这种方式创建数据库对象吗?你下一步怎么做?
2)有更简单的方法吗?
答案 0 :(得分:2)
peewee包含一个名为pwiz的内省工具,它可以(基本上)内省数据库并生成模型定义。它作为命令行脚本运行并将模型定义转储到stdout,因此invokation就像任何其他unix工具一样。以下是the docs的示例:
python -m pwiz -e postgresql my_postgres_db > mymodels.py
从那里编辑mymodels.py
以获得所需内容。
你可以动态地执行此操作,但它需要几个步骤并且是hackish(更不用说如果你真的不了解架构的话就没有意义):
<强> BUT 强>
如果确实不知道要开始的架构,那么你根本不知道数据库的语义是什么,这意味着无论你发现什么都没有意义。除非你至少知道一些你正在寻找的模式/表/列名称(在这种情况下你对模式有所了解),否则你对插入的确无法做多少事情。数据(不是一种理智的方式),尽管你当然可以从数据库中转储数据。但如果您只是想要数据库转储,那么pg_dump
会更容易。
我怀疑这实际上是一个X-Y问题。你试图用这种技术解决什么问题?它应该在你的系统环境中实现什么效果?
答案 1 :(得分:0)
如果要创建GUI,请查看sqlite_web项目。它使用Peewee创建基于Web的SQLite数据库管理器。