所以,我有一个脚本(python 2.7),它从oracle数据库中提取一些值,然后在插入或更新中用于数据库。脚本很长,所以我不打算在这里发布所有内容,几乎在所有情况下,事情都按照我的预期进行,除了这里:
通过某种方式从数据库中提取device_id和mac_id
执行此操作:
print "device_id is %s" % device_id
print "mac_id is %s" % mac_id
给出了这个:
device_id is 117281
mac_id is 3C:07:54:4A:D9:B6
但执行此操作:
print "device_id is %s, mac_id is %s" % (device_id, mac_id)
给出了这个:
device_id is (117281,), mac_id is ('3C:07:54:4A:D9:B6',)
为什么在第二次执行中提供元组中的变量会添加额外的parantheses,逗号和引号?
答案 0 :(得分:2)
因为他们已经是元组了。把它们单独从元组中“提取”出来进行打印。
print "device_id is %s, mac_id is %s" % (device_id + mac_id)
print "device_id is %s, mac_id is %s" % (device_id[0], mac_id[0])
答案 1 :(得分:0)
尝试print device_id
,您会看到它是一个只有一个元素(117281,)
的元组。
这意味着以下内容相同:
print "device_id is %s" % device_id
print "device_id is %s" % (111,)
这些也是:
print "device_id is %s, mac_id is %s" % ( device_id, mac_id )
是
与
print "device_id is %s, mac_id is %s" % ( (111,), ('222',) )
在这两种情况下,您都可以看到外部元组括号被删除 - 元组被解包并映射到输出字符串。但是,在第二种情况下,您添加了一个级别的括号,然后只有该元组被解压缩并且原始的单元素元组仍然存在。在第一种情况下使用它将如下所示:print "device_id is %s" % ( (111,) )
。
编辑:我写得太久了,没看到它已经回答了,对不起:D