【问题标题】:Python query wrong outputPython查询错误输出
【发布时间】:2019-11-13 02:58:10
【问题描述】:

当 userId 与提供给我的用户的内容匹配时,我有一个查询应该返回所有 allowedUserId。我想将查询的结果用于不同的查询,并注意到我一直得到相同的输出。

sql = "SELECT permittedUserId FROM PermittedSharedUSer WHERE PermittedSharedUSer.userId = %s"

这是表格的样子

为什么我会得到这个输出?

[{'num': 3}, {'num': 3}, {'num': 3}, {'num': 3}]

我想要的输出应该是数字 7,6,2,3,而不是 3,3,3,3

这是整个代码:

self.ensureConnected()
        applicationUser = (content['userID'], )
        sql = "SELECT permitedUserId FROM PermittedSharedUSer WHERE PermittedSharedUSer.userId = %s"
        crows = self.cursor.execute(sql, applicationUser)
        result = self.cursor.fetchall()
        
        if(len(result) > 0 ):
            d = collections.OrderedDict()
            objects_list = []
            for row in result:
                d['num'] = row[0]
                #sqlname = "SELECT name , username FROM Users WHERE Users.id=%s"
                #valname = (row[0],)
                #self.cursor.execute(sqlname,valname)
                #resultName = self.cursor.fetchall()
                #for row2 in resultName:
                #    d['name'] = row2[0]
                #    d['username'] = row2[1]
                objects_list.append(d)
            return (json.dumps(dict(data = objects_list), default=str), 200)   
        elif(crows ==None):
            return (json.dumps(dict(data = "empty")), 200)

【问题讨论】:

  • 请添加您的代码并输出为文本,而不是图像。
  • 您正在对同一个字典的四个引用进行操作。在每次迭代中创建一个新的字典。
  • 我该怎么做呢?因为我想在一天结束时将它们作为一个整体组合在一个字典中。
  • 如果。 print(result) 显示正确的值,然后错误就在循环中。

标签: python sql flask kivy


【解决方案1】:

这是我在 SQL 中创建的示例表

以及从中获取数据的代码

import mysql.connector
db = mysql.connector.connect(host='localhost',user='root',passwd='5548',database='test')
cursor =db.cursor()
n='1'
cursor.execute("select permission from test where userid = %s",(n,))
v = cursor.fetchall()
for i in v:
    print(i[0],end=" ")

输出是

7 6 2 4

因此,您建立连接和检索数据的方式很好。

查看for 循环 - 我可以看到可能的错误

objects_list.append(d)

应该是

objects_list.append(d['num'])

代码应该是这样的

applicationUser = (content['userID'], )
sql = "SELECT permitedUserId FROM PermittedSharedUSer WHERE PermittedSharedUSer.userId = %s"
crows = self.cursor.execute(sql, applicationUser)
result = self.cursor.fetchall()
if(len(result) > 0 ):
    d = collections.OrderedDict()
    objects_list = []
    for row in result:
        d['num'] = row[0]
        #sqlname = "SELECT name , username FROM Users WHERE Users.id=%s"
        #valname = (row[0],)
        #self.cursor.execute(sqlname,valname)
        #resultName = self.cursor.fetchall()
        #for row2 in resultName:
        #    d['name'] = row2[0]
        #    d['username'] = row2[1]
        objects_list.append(d['num'])

【讨论】:

  • 你是对的,问题来自 objects_list.append(d)
  • 太棒了!很高兴能为您提供帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多