数据库模式
SmartEDB Python封装器将mcocomp运行时编译到其中,因此数据库结构可以以文本形式定义,就像一个普通的C API模式(mco
)文件一样。
例如,以下就是一个使用Python字符串定义的简单数据库结构:
schema = '''
#define uint4 unsigned<4>
declare database opendb;
class myclass
{
uint4 i4;
};
'''
要处理和加载此模式,请调用 load_dictionary()
方法:
dict = exdb.load_dictionary(schema)
dict
<eXDB.Dictionary object at 0x1006e0790>
load_dictionary()
方法的完整签名相当复杂,因为它包含了 mcocomp 模式编译器的所有选项:
def load_dictionary(schema, nosort=False, dumpxml=False, genhpp=False, gencs=False,
genjava=False, outDir='.', csNamespace='SmartEDB', javaPackage='SmartEDB', cmode1=False,
genXmlMethods=False, genSql=False, largeDatabase=False, wcharSize=2, use_prefix=False,
include_dir='.', compact=False, persistent=False, transient=False, suppress_api=False, debug=False):
只有结构参数本身是必填的,所有其他参数都是可选的,并采用上述所示的默认值。
持久数据库
对于持久数据库应用程序,数据库类的定义与内存数据库完全相同。在 Python 中,内存数据库和持久数据库应用程序之间的区别在于传递给包装器(exdb
)方法 open_database()
的参数 is_disk
:
is_disk=True
- 持久介质。is_disk=False
- 内存中。