首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >作为参数的Google扳手结构

作为参数的Google扳手结构
EN

Stack Overflow用户
提问于 2017-06-08 00:07:10
回答 1查看 361关注 0票数 1

当使用spanner客户端(但问题可能更普遍)时,似乎不可能将结构作为参数传递给查询。

考虑以下设置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from google.cloud.proto.spanner.v1 import type_pb2
from google.cloud import spanner

spanner_client = spanner.Client()
instance = spanner_client.instance('myinstance')
database = instance.database('mydb')

如果我想将以下查询转换为使用参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from UNNEST(ARRAY[STRUCT<foo INT64, bar INT64>(1, 2)])

通过做

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
STRUCT_TYPE = type_pb2.StructType()
FOO = type_pb2.StructType.Field(name='foo', type=type_pb2.Type(code=type_pb2.INT64))
BAR = type_pb2.StructType.Field(name='bar', type=type_pb2.Type(code=type_pb2.INT64))

STRUCT_TYPE.fields.extend([FOO, BAR])

database.execute_sql('select * from UNNEST(ARRAY[@struct])', 
    params={'struct': [1,2]}, 
    param_types={'struct': STRUCT_TYPE})

会给我

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TypeError: Parameter to MergeFrom() must be instance of same class: expected Type got StructType.

有什么办法允许通过结构吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-08 09:13:47

你现在不能通过结构体。这是我们要解决的问题,但没有明确的时间表。

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

https://stackoverflow.com/questions/44430100

复制
相关文章
结构体作为函数的参数
> 只要结构体成员是一个具有单个值的数据类型,便可把它作为参数传递给接受该特定类型的函数。 > 使用这种方式为函数传递参数与普通变量作为参数相同,都是以传值的方式传递的。
怪兽
2022/12/31
2.1K0
【C 语言】结构体 ( 结构体作为函数参数 | 结构体指针作为函数参数 )
结构体变量 作为函数形参 , 在函数中 , 只能访问 该函数形参 , 无法修改 结构体内存 的值 ;
韩曙亮
2023/03/29
3.7K0
【C 语言】结构体 ( 结构体作为函数参数 | 结构体指针作为函数参数 )
使用结构体作为函数输入参数
使用结构体作为函数的输入参数的话,在更新函数的时候,就没有必要把函数的声明以及所有调用函数的地方全部更新一遍,相对还比较方便,对于输入参数比较多的函数可以使用结构体作为输入参数。常用的有三种方式,分别是:用结构体变量作函数参数,用指向结构体变量的指针作函数参数,用结构体变量的引用变量作函数参数。
用户9736681
2022/05/11
3K0
[编程] C语言结构体指针作为函数参数
结构体指针作为函数参数: 结构体变量名代表的是整个集合本身,作为函数参数时传递的整个集合,也就是所有成员,而不是像数组一样被编译器转换成一个指针。如果结构体成员较多,尤其是成员为数组时,传送的时间和空间开销会很大,影响程序的运行效率。所以最好的办法就是使用结构体指针,这时由实参传向形参的只是一个地址,非常快速。
唯一Chat
2019/09/10
5.7K0
【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )
在上一篇博客 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 栈内存创建 ) 的基础上 , 将 栈内存 中的 结构体数组 , 更改为 堆内存 中创建结构体数组 ;
韩曙亮
2023/03/30
1.5K0
【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )
【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 栈内存创建 )
声明结构体类型 : 定义 结构体 数据类型 , 同时为该结构体类型声明 别名 , 可以直接使用 别名 结构体变量名 声明结构体类型变量 , 不需要在前面添加 struct 关键字 ;
韩曙亮
2023/03/29
1.8K0
【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 栈内存创建 )
6.5 数组作为函数参数
在用数组元素作函数实参时,把实参的值传递给形参,是“值传递”方式。数据传递的方向是从实参传到形参,单向传递
小林C语言
2019/08/19
1.3K0
7.3 数组作为函数参数
2、用数组元素作实参时,向形参变量传递的是数组元素的值,而用数组名作函数实参时,向形参传递的是数组首元素的地址。
小林C语言
2019/07/12
1.6K0
Python 函数作为参数传递
#map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中。 #map通过读入的函数(这里是lambda函数)来操作数据 def test_func_map():     re = map((lambda x: x+3), [1, 2, 3, 4])     print re def testA(a, b, **kargs):     print a+b     print "testA: %s" % kargs #函数作为参数传递 def test_func(func, a, b, **kargs):     func(a, b)     print "test_func: %s" % kargs #函数作为参数传递 def test_func_lambda(func, **kargs):     func()     print "test_func_lambda: %s" % kargs def test_func_getattr():     func = getattr(obj, "testA")     func(1, 2) class TestGetattr():     aa = "2a"     def get_attr(self):         print "test getattr()"     def print_text(self):         print "print text"     def print_string(self):         print "print string" #getattr(obj, "a")的作用和obj.a是一致的,但该方法还有其他的用处,最方便的就是用来实现工厂方法 #根据传入参数不同,调用不同的函数实现几种格式的输出 def output(print_type="text"):     tg = TestGetattr()     output_func = getattr(tg, "print_%s" % print_type)     output_func() if __name__ == "__main__":     #test_func(testA, 1, 2, aa="aa")     #test_func_lambda((lambda: testA(1, 2, bb="bb")), cc="cc")     #test_func_map()     #test_func_getattr()     #getattr方法,传入参数是对象和该对象的函数或者属性的名字,返回对象的函数或者属性实例     obj = TestGetattr()     func = getattr(obj, "get_attr") #getattr()获得对象的属性和方法     func()     print getattr(obj, "aa") #完成对象的反射     print obj.aa     #callable方法,如果传入的参数是可以调用的函数,则返回true,否则返回false。     print callable(getattr(obj, "aa"))     output("string")
py3study
2020/01/09
3K0
函数(四)(数组作为函数参数)
一是数组元素作为函数参数,这种情况下与简单变量作为函数的参数完全一样,数组元素的值被单向传递给形参变量。
pigeon
2022/04/11
1.5K0
函数(四)(数组作为函数参数)
C语言结构体类型定义+结构体变量的定义与使用及其初始化+结构体变量作为函数参数
在结构体类型定义好的情况下,注意是结构体类型定义好的情况下,才能定义结构体变量。 比如:
Twcat_tree
2022/11/30
2.4K0
C语言结构体类型定义+结构体变量的定义与使用及其初始化+结构体变量作为函数参数
js匿名函数作为函数参数
继承,多态,甚至指针,c能实现,c++,java有,javascript(和java是雷锋和雷峰塔的区别,名字上不知道坑了多少人)也能变通实现。
全栈程序员站长
2022/11/10
5.3K0
Go 语言指针作为函数参数
Go 语言允许向函数传递指针,志需要在函数定义的参数上设置为指针类型即可。 以下实例演示了如何向函数传递指针,并在函数调用后修改函数内的值,: package mainimport "fmt"func main() { /* 定义局部变量 */ var a int = 100 var b int= 200 fmt.Printf("交换前 a 的值 : %d\n", a ) fmt.Printf("交换前 b 的值 : %d\n", b ) /* 调用函数用于交换值
李海彬
2018/03/22
1.4K0
Go-函数作为参数传递
编码过程中业务需要将一个函数,作为参数传递到函数内部。Go 语言的匿名函数是一个闭包(Closure)
王小明_HIT
2023/03/01
1.7K0
Go-函数作为参数传递
springmvc之使用POJO作为参数
springmvc会按请求参数名和POJO属性名进行匹配,自动为该对象填充属性值,支持级联属性。
西西嘛呦
2020/08/26
6500
springmvc之使用POJO作为参数
结构变量作为方法的参数调用,在方法内部使用的“坑”你遇到过吗?
很久没有写博了,今天一个同学在问结构变量的问题,问结构到底是传递值还是传递引用。查过MSDN的都知道,结构默认是传递值的,因此在方法内部,结构的值会被复制一份。但是对于结构数组,如果值还是要被复制一份,这个内存占用是不是很多了呢? 一般来说,数组参数传递的是引用,那么数组的元素呢?它是被复制的还是被引用的?如果结构数组的元素象结构变量那样也是复制的,那么对于方法调用的内存占用问题,就得好好考虑下了。 MSDN看了半天,也讨论了半天,感觉还是没有动手实验最有说服力,我们先定义一个结构体: struct Poi
用户1177503
2018/02/26
2.5K0
linux/bash:map作为参数传递给function
在linux bash中map是作为数组处理的,不能作为参数直接传递函数,如果一定要传递给函数,要做一些变通处理,示例如下:
10km
2019/08/14
2.7K0
7.3 C语言数组作为函数参数
2、用数组元素作实参时,向形参变量传递的是数组元素的值,而用数组名作函数实参时,向形参传递的是数组首元素的地址。
小林C语言
2020/12/07
2.8K0
7.3 C语言数组作为函数参数
【C语言笔记】函数指针作为函数的参数
函数指针有两种常用的用法,一种是作为结构体成员,关于函数指针作为结构体成员的用法可移步至上一篇【C语言笔记】函数指针作为结构体成员进行查看。另一种是函数指针作为函数的参数。这一篇分享的是函数指针作为函数的参数。
正念君
2019/06/26
10.8K0
【C语言笔记】函数指针作为函数的参数
使用servlet原生API作为参数(9)
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> /** * 可以使用Servlet 原生的API作为目标方法的参数 具体支持以下类型: * HttpServletRequest * HttpServletR
桑鱼
2020/03/18
7590

相似问题

到Google扳手参数的JDBC连接

14

Google扳手JDBC驱动程序连接参数

10

结构作为参数的结构

31

GCP扳手支持结构数组

13

server到google扳手迁移

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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