cursor.fetchall()使用MySQldb和python返回额外字符
当我使用python从SQL数据库获取结果时,我会在返回值的开头和结尾获得额外的特许。例如,下面的代码返回((56L,),)而不是56,是否有人知道如何仅获取值。。。那么((,),)到底是什么意思cursor.fetchall()使用MySQldb和python返回额外字符,python,mysql,mysql-python,Python,Mysql,Mysql Python,当我使用python从SQL数据库获取结果时,我会在返回值的开头和结尾获得额外的特许。例如,下面的代码返回((56L,),)而不是56,是否有人知道如何仅获取值。。。那么((,),)到底是什么意思 hp= 56 id= 3 database = MySQLdb.connect (host="localhost", user = "root", passwd = "", db = "db") cursor = database.cursor() cursor.execute("UPDATE
hp= 56
id= 3
database = MySQLdb.connect (host="localhost", user = "root", passwd = "", db = "db")
cursor = database.cursor()
cursor.execute("UPDATE period_option SET points =%s WHERE period_option_id =%s", (hp, id))
cursor.execute("SELECT points FROM period_option WHERE period_option_id =%s", (po_id_home))
results = cursor.fetchall()
print results
56L
是一个标准配置。“长整数具有无限精度。”它们可以像普通整数一样使用
通过执行以下操作,您可以看到长值:
for result in results:
print result[0]
REPL会话示例:
>>> results = ((56L,),)
>>> for result in results:
... print(result[0])
...
56
.fetchall()
在中定义为“作为序列序列(例如元组列表)”返回其余行。MySQLdb的默认设置是使用一个元组,看起来像这样的(,)
,或者甚至像这样的((1,2,3),(4,5,6))
,其中结果集的各个行是内部元组,因此总是具有相同的长度。fetchall()
返回一个元组列表(实际上是:元组)。可以将其视为一个行序列,其中每一行都是列中项目的序列。如果您确定搜索只返回1行,请使用fetchone(),它返回一个元组,解包更简单。下面是从fetchall()和fetchone()提取所需内容的示例:
尝试以下方法,将fetchall()输出转换为更好的列表将有所帮助:
row = cursor.fetchall()
print row
output is : [(1,), (2,), (3,), (4,)]
num = list(sum(row, ()))
print num
output is : [1, 2, 3, 4]
如果使用查询只获取一个值,则只需获取第0个索引
results = cursor.fetchall()
如果结果只有一个值,请使用results[0]
。它应该给你你正在寻找的价值。
有时,当我们运行查询时,会得到一个巨大的结果,在这种情况下,我们必须遍历这些值并将其分配给列表
>>> result
('58',)
>>> result[0]
'58'
当您运行大型项目的查询时,使用curosr.fetchall()时会得到如下输出
使用以下代码以列表格式获取数据
>>> results=(('58',),('50',),('10'),)
>>>[x[0] for x in results] --> code
['58', '50', '1']
我这样做是为了创建一个集合:fechasSet=set(sum(rows,()))
(('58',),('50',),('10'),)
>>> results=(('58',),('50',),('10'),)
>>>[x[0] for x in results] --> code
['58', '50', '1']