我正在寻找一个允许类的准透明序列化和反序列化的 OO sqlite C++ 包装器。
我想到的工作流程如下:
- 用数据成员定义一个类记录
- 将此类提供给创建合适表的包装器
通过 << 和 >> 对整个类进行简单的序列化和反序列化。
这是现实的还是我必须自己编写运算符?理想情况下,我不想担心数据如何进入数据库以及如何存储......易用性是我主要关心的问题,而不是灵活性或性能。
我正在寻找与GAE 数据存储 python 接口类似的东西。
非常感谢, 阿里克
我正在寻找一个允许类的准透明序列化和反序列化的 OO sqlite C++ 包装器。
我想到的工作流程如下:
通过 << 和 >> 对整个类进行简单的序列化和反序列化。
这是现实的还是我必须自己编写运算符?理想情况下,我不想担心数据如何进入数据库以及如何存储......易用性是我主要关心的问题,而不是灵活性或性能。
我正在寻找与GAE 数据存储 python 接口类似的东西。
非常感谢, 阿里克
没有简单的 C++ ORM(对象关系映射)工具。我所知道的可以简化流程的两个库是:
SOCI 更简单,在哲学上类似于 boost,而 debea 更面向 ORM。
顺便说一句,如果 SQLite / SQL / requests 不是强制性的,你可以使用Boost 序列化框架。
只是我的两分钱
编辑:
好吧,鉴于几乎不存在 C++ 反射的可能性,我的拙见是,做你想做的事情的唯一方法是使用代码生成器。鉴于没有像样的、易于使用的 C++ 解析器/词法分析器/...,我知道没有一个广泛使用的工具可以做到这一点。
我认识的人多年来一直有同样的问题。他终于找到了一个解决方案:他告诉我clang现在可以使用(它编译boost),并且他使用它根据代码中的标记生成序列化代码(他告诉我TR1中支持标记,但是我不是专家)。这是很有价值的反馈,我自己在这个领域的尝试让我同意这个解决方案。
Quince 是一个库,几乎可以完全满足提问者的要求。请参阅quince-lib.com。
(完全披露:我写的。)
这个问题是前一阵子问的。从那时起,Hiberlite得到了开发,并声称几乎可以完全满足您的要求。
它不支持使用 << 和 >> 进行读/写(Boost.serialization 支持,正如其他人所提到的,但它不存储在 SQL DB 中);但是,使用它似乎很容易。
试试sqlite_orm
https://github.com/fnc12/sqlite_orm。它提供了你所需要的——将一个类映射到一个表,将类成员映射到列