Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Intersystems Cache - Python是否可用于直接访问全局类或仅访问暴露为sql表的类?

Intersystems Cache - Python是否可用于直接访问全局类或仅访问暴露为sql表的类?
EN

Stack Overflow用户
提问于 2011-12-20 00:52:21
回答 2查看 2K关注 0票数 0

python接口是否可用于直接访问和遍历intersystems全局缓存,或者python是否仅公开我在使用链接服务器或ODBC连接时看到的相同“表”?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-17 03:26:31

如果您想要直接访问全局变量,可以创建一个存储过程来执行此操作。在执行此操作之前,您应该考虑安全性问题-它将向具有ODBC访问权限的任何人公开全局中的所有数据。

下面是一个存储过程示例,它返回最多9个全局下标的值,加上该节点的值。如果需要的话,你可以很容易地修改它。

代码语言:javascript
运行
AI代码解释
复制
Query OneGlobal(GlobalName As %String) As %Query(ROWSPEC = "NodeValue:%String,Sub1:%String,Sub2:%String,Sub3:%String,Sub4:%String,Sub5:%String,Sub6:%String,Sub7:%String,Sub8:%String,Sub9:%String") [SqlProc]
{
}

ClassMethod OneGlobalExecute(ByRef qHandle As %Binary, GlobalName As %String) As %Status
{
    S qHandle="^"_GlobalName
    Quit $$$OK
}

ClassMethod OneGlobalClose(ByRef qHandle As %Binary) As %Status [ PlaceAfter = OneGlobalExecute ]
{
    Quit $$$OK
}

ClassMethod OneGlobalFetch(ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [ PlaceAfter = OneGlobalExecute ]
{

    S Q=qHandle  
    S Q=$Q(@Q)  b  
    I Q="" S Row="",AtEnd=1 Q $$$OK
    S Depth=$QL(Q)
    S $LI(Row,1)=$G(@Q)
    F I=1:1:Depth S $LI(Row,I+1)=$QS(Q,I)
    F I=Depth+1:1:9 S $LI(Row,I+1)=""
    S AtEnd=0
    S qHandle=Q
    Quit $$$OK
}

要从python访问它,您可以使用(与pyodbc一起):

代码语言:javascript
运行
AI代码解释
复制
import pyodbc
import win32com.client
import urllib2

class CacheOdbcClient:

    connectionString="DSN=MYCACHEDSN"

    def __init__(self):
        pass

    def getGlobalAsOverlyLargeList(self):
        connection=pyodbc.connect(self.connectionString)
        cursor=connection.cursor()
        cursor.execute("call MyPackageName.MyClassName_OneGlobal ?","MYGLOBAL")
        list=[]
        for row in cursor :
            list.append((row.NodeValue,row.Sub1,row.Sub2,row.Sub3,row.Sub4,row.Sub5,row.Sub6,row.Sub7,row.Sub8,row.Sub9))
        return list
票数 1
EN

Stack Overflow用户

发布于 2011-12-20 23:15:15

在Python中有两种缓存访问类型-- ODBC连接(您将看到您的表)和Python绑定(您将看到您的类)。如果需要,您可以创建一个类,它将遍历Cache全局变量,然后从Python绑定中使用它。在Cache中有一个关于Python绑定的文档。http://docs.intersystems.com/cache20111/csp/docbook/DocBook.UI.Page.cls?KEY=GBPY

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8569545

复制
相关文章
python的类访问控制
在python类中,有属性和方法,外部代码可以直接通过实例来访问修改。 如果需要让内部的属性不被外部访问到,在属性变量前面加上__2个下划线。 在python中,实例的变量名如果是由__2个下花钱开头
小小科
2018/05/04
1.5K0
python的类访问控制
【python 3.6】类:访问属性及调用方法
调用方法时,使用x.zhekou(),要加括号,是否有返回,要看方法中是否有return
BH8ANK
2021/01/29
1.8K0
Python把类当做字典来访问
定义一个类将它实例化,我们可以通过obj.属性来访问类的属性,如果想获取类的所有实例变量,我们可以使用obj.__dict__来访问,如下:
狼啸风云
2020/02/14
1.5K0
Python把类当做字典来访问
如果我们想直接通过字典的方式访问类,obj=A(),dict(obj)直接拿到类的所有实例变量,可以通过如下方式:
py3study
2020/01/16
2.4K0
Java中不同包下类与类之间的访问
Java中不同包下类与类之间的访问 (1)我们多次使用一个带包的类,都需要加包的全路径,非常的麻烦,这个时候,Java就提供了导包的功能,提供了一个关键字import。 (2)格式: import 包名.包名. ...包名.类名;       这种方式导入的是:到类的名称。     另一种: import 包名.包名. ... .*;(不建议) (3) package、import、class有没有顺序关系呢?     有。     package > import > class     package:只能有一个     import:可以有多个     class:可以有多个,以后建议是一个。(因为每一个类是一个独立的单元)
黑泽君
2018/10/11
3.6K0
C++类成员的访问权限以及类的封装
C++通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。所谓访问权限,就是你能不能使用该类中的成员。
芯动大师
2023/10/14
4020
C++类成员的访问权限以及类的封装
定义和构建索引(一)
索引是由持久类维护的结构,InterSystems IRIS®数据平台可以使用它来优化查询和其他操作。
用户7741497
2022/06/07
6300
java类的访问修饰符
1、private:用private修饰外部类,表示该外部类不能被其他类访问,那么定义这个类就失去了意义,所以private只能修饰内部类。内部类的上一级是外部类,那么对应的有四种访问控制修饰符:本类(private),同包(default),父子类(protected),任何位置(public)。当一个内部类使用了private修饰后,只能在该类的外部类内部使用。
说故事的五公子
2019/09/11
1.1K0
C#封装的Sqlite访问类
C#封装的Sqlite访问类,要访问Sqlite这下简单了,直接调用此类中的方法即可
艳艳代码杂货店
2021/10/27
1.2K0
Class文件访问标志&类索引
在常量池以后,紧接着是2个字节的访问标志,用来表示一个Class文件的基本访问信息,包括Class是类还是接口,是否被定义为public类型,是否被定义为abstract类型。具体如下图所示:
shysh95
2020/08/27
1K0
Class文件访问标志&类索引
判断集合是否为空的工具类:CollectionUtils 工具类
判断集合是否为空: 方法: CollectionUtils.isEmpty(集合); 判断集合是否不为空 方法: CollectionUtils.isNotEmpty(集合);
用户9006224
2022/12/21
5910
使用管理门户SQL接口(二)
Management Portal SQL界面的左侧允许查看模式(或匹配筛选器模式的多个模式)的内容
用户7741497
2022/06/07
5.2K0
【Groovy】Groovy 方法调用 ( 使用 对象名.成员名 访问 Groovy 类的成员 | 使用 对象名.‘成员名‘ 访问类的成员 | 使用 对象名[‘成员名‘] 访问类成员 )
可以使用 对象名.‘成员名’ 访问 Groovy 类的成员 , 这样写的好处是 , 不用将代码写死 , 在运行时可以自由灵活的决定要访问哪个成员 ;
韩曙亮
2023/03/30
2.4K0
【Groovy】Groovy 方法调用 ( 使用 对象名.成员名 访问 Groovy 类的成员 | 使用 对象名.‘成员名‘ 访问类的成员 | 使用 对象名[‘成员名‘] 访问类成员 )
InterSystems SQL简介
InterSystems SQL提供对InterSystems IRIS®Data Platform数据库中存储的数据的无懈可击的标准关系访问。
用户7741497
2022/06/02
6060
InterSystems SQL基础
本章概述了InterSystems SQL的特性,特别是那些SQL标准未涵盖的特性,或者与InterSystems IRIS®数据平台统一数据架构相关的特性。 本教程假定读者具备SQL知识,并不是为介绍SQL概念或语法而设计的。
用户7741497
2022/06/02
2.6K0
简介global
InterSystems IRIS®的核心功能之一是其多维存储引擎。此功能允许应用程序以紧凑、高效的多维稀疏数组存储数据。这些数组称为全局数组。
用户7741497
2022/06/08
9700
【C++】类的封装 ④ ( 访问控制权限 | struct 和 class 关键字定义类的区别 | 类的默认访问权限 | 类的默认继承方式 )
在 C++ 语言中 , 使用 struct 和 class 关键字 , 都可以 用于定义 类 , 这些被定义的类 都 具有相似的语法和功能 , 只是在默认情况下有一些不同的行为 ;
韩曙亮
2023/10/15
2670
在其他程序集访问internal类
 本文将介绍如何在其他程序集访问internal类的方法 首先我们新建一个解决方案,其中同时新建两个类库FooALibray和FooALibray,如下:
ryzenWzd
2021/05/21
1.5K0
在其他程序集访问internal类
C++ 类访问修饰符
数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。关键字 public、private、protected 称为访问修饰符。
嵌入式视觉
2022/09/05
5180
C++ 类访问修饰符
Map 类集合键值对是否可空?
集合类 Key Value Super 说明 Hashtable 不允许为 null 不允许为 null Dictionary 线程安全 ConcurrentHashMap 不允许为 null 不允许为 null AbstractMap 分段锁技术 TreeMap 不允许为 null 允许为 null AbstractMap 线程不安全 HashMap 允许为 null 允许为 null AbstractMap 线程不安全 参考:阿里巴巴 Java 开发手册
水货程序员
2018/11/13
2.4K0

相似问题

使用FK自动向Django中的用户填充模型字段

11

Django客户与用户的onetoone关系-如何在创建用户时为该模型创建字段?

14

使用OneToOne关系的Django模型?

30

与未使用查询的用户的Django onetoone关系

112

自动填写Django模型中的用户字段

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文