第三章 嵌入式Python概述(三)
使用 SQL
IRIS 中的类被投影到 SQL,除了使用类方法或直接全局访问之外,还允许使用查询访问数据。 iris 模块为提供了两种从 运行 语句的不同方式。
以下示例使用 运行 语句以查找类名称以“%Net.LDAP”开头的所有类定义,返回一个包含每个名称和超类的结果集每个班级。在这里,系统类 将 投影为同名表。
>>> rs = iris.sql.exec("SELECT Name, Super FROM %Dictionary.ClassDefinition WHERE Name %STARTSWITH '%Net.LDAP'")
以下示例使用 准备 查询对象,然后执行查询,将“%Net.LDAP”作为参数传入:
>>> stmt = iris.sql.prepare("SELECT Name, Super FROM %Dictionary.ClassDefinition WHERE Name %STARTSWITH ?")
>>> rs = stmt.execute("%Net.LDAP")
无论哪种情况,都可以按如下方式遍历结果集,并且输出相同:
>>> for idx, row in enumerate(rs):
... print(f"[{idx}]: {row}")
...
[0]: ['%Net.LDAP.Client.EditEntry', '%RegisteredObject']
[1]: ['%Net.LDAP.Client.Entries', '%RegisteredObject,%Collection.AbstractIterator']
[2]: ['%Net.LDAP.Client.Entry', '%RegisteredObject,%Collection.AbstractIterator']
[3]: ['%Net.LDAP.Client.PropList', '%RegisteredObject']
[4]: ['%Net.LDAP.Client.Search.Scope', '%Integer']
[5]: ['%Net.LDAP.Client.Session', '%RegisteredObject']
[6]: ['%Net.LDAP.Client.StringList', '%RegisteredObject']
[7]: ['%Net.LDAP.Client.ValueList', '%RegisteredObject,%Collection.AbstractIterator']