使用 Python 模块 peewee 将行插入具有未知模式的数据库
Insert row into database with unknown schema using Python module peewee
我正在使用 Python 的 peewee 模块构建数据库接口。我试图弄清楚如何将数据插入到我不知道架构的现有数据库中。
我的想法是使用 playhouse.reflection.Introspector 找出数据库模式,然后使用该信息创建 class 对象,然后将其插入到现有数据库中。
到目前为止我已经做到了:
introspector = Introspector.from_database(database)
models = introspector.generate_models()
我不知道从那里去哪里。
1) 我可以用这种方式创建数据库对象吗?你下一步怎么做?
2) 有更简单的方法吗?
peewee 包括一个名为 pwiz 的 introspection 工具,它可以(基本上)introspect 数据库并生成模型定义。它是 运行 作为命令行脚本并将模型定义转储到标准输出,因此调用就像任何其他 unix 工具一样。这是来自 the docs 的示例:
python -m pwiz -e postgresql my_postgres_db > mymodels.py
从那里编辑 mymodels.py
以获得您需要的内容。
您可以即时执行此操作,但它需要几个步骤并且很老套(如果您真的对架构一无所知,更不用说毫无意义了) :
- 运行 pwiz 作为 os 命令
- 阅读它以挑选型号名称
- 导入你找到的任何东西
但是
如果您真的不知道从什么模式开始,那么您无论如何都不知道数据库的语义是什么,这意味着您找到的任何内容都毫无意义。除非你至少知道一些你正在寻找的 schema/table/column 名字(在这种情况下你确实知道一些关于模式的事情),否则你在 inserting[=34= 方面真的无能为力] 数据(不是以一种理智的方式),尽管你当然可以从数据库中转储数据。但是,如果您只是想要一个数据库转储,那么 pg_dump
会更容易。
我怀疑这实际上是一个 X-Y 问题。您尝试使用此技术解决什么问题?它支持os在您的系统上下文中实现什么效果?
如果要创建 GUI,请查看 sqlite_web 项目。它使用 Peewee 创建基于 Web 的 SQLite 数据库管理器。
我正在使用 Python 的 peewee 模块构建数据库接口。我试图弄清楚如何将数据插入到我不知道架构的现有数据库中。
我的想法是使用 playhouse.reflection.Introspector 找出数据库模式,然后使用该信息创建 class 对象,然后将其插入到现有数据库中。
到目前为止我已经做到了:
introspector = Introspector.from_database(database)
models = introspector.generate_models()
我不知道从那里去哪里。
1) 我可以用这种方式创建数据库对象吗?你下一步怎么做?
2) 有更简单的方法吗?
peewee 包括一个名为 pwiz 的 introspection 工具,它可以(基本上)introspect 数据库并生成模型定义。它是 运行 作为命令行脚本并将模型定义转储到标准输出,因此调用就像任何其他 unix 工具一样。这是来自 the docs 的示例:
python -m pwiz -e postgresql my_postgres_db > mymodels.py
从那里编辑 mymodels.py
以获得您需要的内容。
您可以即时执行此操作,但它需要几个步骤并且很老套(如果您真的对架构一无所知,更不用说毫无意义了) :
- 运行 pwiz 作为 os 命令
- 阅读它以挑选型号名称
- 导入你找到的任何东西
但是
如果您真的不知道从什么模式开始,那么您无论如何都不知道数据库的语义是什么,这意味着您找到的任何内容都毫无意义。除非你至少知道一些你正在寻找的 schema/table/column 名字(在这种情况下你确实知道一些关于模式的事情),否则你在 inserting[=34= 方面真的无能为力] 数据(不是以一种理智的方式),尽管你当然可以从数据库中转储数据。但是,如果您只是想要一个数据库转储,那么 pg_dump
会更容易。
我怀疑这实际上是一个 X-Y 问题。您尝试使用此技术解决什么问题?它支持os在您的系统上下文中实现什么效果?
如果要创建 GUI,请查看 sqlite_web 项目。它使用 Peewee 创建基于 Web 的 SQLite 数据库管理器。