Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cursor.fetchall()使用MySQldb和python返回额外字符_Python_Mysql_Mysql Python - Fatal编程技术网

cursor.fetchall()使用MySQldb和python返回额外字符

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

当我使用python从SQL数据库获取结果时,我会在返回值的开头和结尾获得额外的特许。例如,下面的代码返回((56L,),)而不是56,是否有人知道如何仅获取值。。。那么((,),)到底是什么意思

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']