PyQt5 Python:如何通过 MySQL 查询结果中的单个数据行

Posted

技术标签:

【中文标题】PyQt5 Python:如何通过 MySQL 查询结果中的单个数据行【英文标题】:PyQt5 Python: How to go through Individual Row of Data from MySQL Query Result 【发布时间】:2021-12-30 19:11:56 【问题描述】:

我正在尝试使用 Python 在 PyQt5 中的 QComboBox 中添加项目。我在从每行的 SQL 查询中添加数据时遇到问题。

cursor = cnx.cursor()
            query = "SELECT buyerID, lastName, firstName, middleName FROM buyer ORDER BY id DESC LIMIT 5"
            cursor.execute(query)
            data = cursor.fetchall()
            item = list()
            for a, b, c, d in data:
                row = " | ,  ".format(a, b, c, d)
                item.append(row)
            self.customerID.addItem(str(item))

这导致只有一个项目添加到组合框中:

100000 | lastName, firstName middleName, 100000 | lastName, firstName middleName, 100000 | lastName, firstName middleName...etc.

我想在ComboBox中发生的事情是这样的(在Combo Box中一共添加5个项目)

100001 | lastName, firstName middleName
100002 | lastName, firstName middleName
100003 | lastName, firstName middleName
100004 | lastName, firstName middleName
100005 | lastName, firstName middleName

编辑:

cursor = cnx.cursor()
query = "SELECT buyerID, lastName, firstName, middleName FROM buyer ORDER BY id DESC LIMIT 5"
cursor.execute(query)
data = cursor.fetchall()
item = list()
for a, b, c, d in data:
    row = " | ,  ".format(a, b, c, d)
    item.append(row)
    self.customerID.addItem(str(item))  <------- I just moved this line of code into the FOR loop statement to add the item per loop.

同样的问题:

追加的Item依然是所有数据行归一。

【问题讨论】:

只需使用addItems(item)(注意最后的“s”)。 【参考方案1】:

在发布我的问题并自行修改后,我偶然发现了我的问题的答案,因为我意识到我必须更改 FOR LOOP 语句才能枚举来自 mysql Query Result 和 .addItem 的数据长度 到 ComboBox,然后再从 data(SQL 查询结果)的结果中转到下一个元组。

for a in enumerate(data):                 <--- changed the for loop statement to "enumerate" how many data inside the MySQL Query Result
     j, k = a                             <--- split (index, tuple) in a
     l, m, n, o = k                       <--- separate tuple into strings
     string = " | ,  ".format(l, m, n, o)
     self.customerID.addItem(str(string)) <------- I just moved this line of code into the FOR loop statement to add the item before moving on to the next row in SQL results. 

【讨论】:

以上是关于PyQt5 Python:如何通过 MySQL 查询结果中的单个数据行的主要内容,如果未能解决你的问题,请参考以下文章

该怎么用pyqt5来实现数据的增删改查功能...

Python PyQt5如何更改最小化图标

Python PyQt5如何更改最小化图标

如何在python使用mysql的增删改查

Windows环境下 PyQt5 如何安装MySql驱动 (PyQt5连接MYSQL时显示Driver not loaded解决方案)

如何针对 Intel Python 3.6.x(64 位)正确安装 PyQt5 模块?