python - 括号和引号被注入(inject)到 SQL 查询的返回结果中

标签 python mysql

我正在尝试运行 SQL 查询,但返回的结果不断返回,并带有括号和引号 ''

如果我查询多列,问题就会消失,但如果我只选择一列,问题就会再次出现。

我在谷歌上查了一下,目前没有任何运气。

import mysql.connector

mydb = mysql.connector.connect(
  host="xxxxxxxx",
  user="xxxxxxxx",
  passwd="xxxxxxxx",
  database="vmware"
)

query_string = "select UserID FROM VM WHERE CommissionStatus='commissioned';"

mycursor = mydb.cursor()

mycursor.execute(query_string)

ReturnedUser_id = []

for (User_id) in mycursor:
    ReturnedUser_id.append(User_id)
    print(User_id)

问题似乎出在循环上。在下面的例子中,我选择了多列,没有问题

for (User_id, VMName, VMTemplate) in mycursor:
    ReturnedUser_id.append(User_id)
    ReturnedVMName.append(VMName)
    ReturnedVMTemplate.append(VMTemplate)
    print(User_id)

输出:

32645845
32589456
32688145

并且没有烦人的引号、括号或逗号。

只要我只查询一列,返回的结果中就会再次出现此问题。

for (User_id) in mycursor:
    ReturnedUser_id.append(User_id)
    print(User_id)

但只打印一列:

('32645845',)
('32589456',)
('32688145',)

最佳答案

问题是语法 for (User_id) in mycursor:for User_id in mycursor: 相同,这里 mycursor 是元组列表。为了在 1 个元素的元组上使用循环,您需要使用 for (User_id,) in mycursor:

例如:

a = [(1,),(2,),(3,)]

for i in a:
    print(i)
#(1,)
#(2,)
#(3,)
for (i,) in a:
    print(i)
#1
#2
#3

关于python - 括号和引号被注入(inject)到 SQL 查询的返回结果中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58154303/

相关文章:

python - 来自 statsmodels.tsa.statespace 的 sarimax 的 AttributeError

python - 模型 clean() 方法和表单 clean() 方法之间有什么关系吗?

Mysql 最大查询

MySQL,在多行中搜索相同的列

python - 在 pandas json 中添加一个更高一级的对象

python - 如何在 PySide 的 QTreeView 中隐藏 QFileSystemModel 中的项目?

php - 将mysql查询限制为1个结果?

mysql - 带条件乘法的sql语句应该怎么写?

php - 恢复备份 mysqldump php

python - 使用 mask 和 Python scikit-image 裁剪图像