相关疑难解决方法(0)

SQLAlchemy:知道模型对象的字段名称和值吗?

我正在努力保持面向对象的 SOLID 编程原则,保持 DRY 等,但我对 Python/SQLAlchemy/Pyramid 的陌生使它变得非常困难。

我正在尝试采用我现在知道的用于创建简单 Pyramid Framework 对象的 SQLAlchemy 模型,并使用我所知道的 C# 中的“反射”,它可能在 Python 中被称为不同的东西(内省?不确定,因为这只是我使用 python 的第二周,但我在其他语言(C/C++/C#、Java 等)方面有很多经验,所以麻烦似乎是将我的知识映射到 python 的词汇表,抱歉),以找出数据库表的字段名,最重要的是当前字段值,当我事先不知道列名或任何形状的对象时。

这是正确的; 我不知道 'derp' 实例有一个名为 id 或 name 的字段,只是它在每个字段中都有一个列和一个值。这就是我所关心的。

目标是能够采用任何 SQLAlchemy 定义的数据模型,并将其转换为 column_name -> column_value 字段的字典,这些字段的类型为 JSON 中的简单数据类型,因为我想最终将我在 SQLAlchemy 中创建的任何对象序列化为json 对象,但我会选择一个字典,因为只要字典包含正确类型的数据,它就很简单。手动为每个对象执行此操作违反了太多良好的干净代码规则,并且随着时间的推移会产生过多的工作;我可以再花一个星期的时间来做这件事,并且仍然可以通过正确的方式来节省时间和精力。

因此,如果我在 SQLAlchemy 中定义了一个类:

class SimpleFooModel(Base):
    id = Column(Integer, primary_key=True, autoincrement=True, nullable=False)
    name = Column(VARCHAR(length=12), nullable=False, index=True)
Run Code Online (Sandbox Code Playgroud)

..我有一个等于(在python中)的实例:

derp = SimpleFooModel(id=7, name="Foobar")
Run Code Online (Sandbox Code Playgroud)

我希望能够只拥有上面描述的“derp”实例变量,而对模型的形状一无所知,并且能够将其展平为该简单对象的 python 键-> 值字典,其中每个可以使用 python syslib 中的 import json 将该字典中的值序列化为 JSON。

问题是,我已经看了 2 天了,但找不到可以在任何地方为我的单元测试提供想要的结果的答案;谷歌一直把我带到 SO 上关于真正旧版本的库的非常旧的帖子,这些版本要么使用不再适用的接口,要么接受了实际上根本不起作用的答案;并且因为它们都不是最近的,这确实让我感到惊讶(但是为什么 Stack …

python json sqlalchemy solid-principles pyramid

4
推荐指数
1
解决办法
2035
查看次数

标签 统计

json ×1

pyramid ×1

python ×1

solid-principles ×1

sqlalchemy ×1