我想用Python语言从MySQL中取出多行,每行放入一个字符串.

mycursor.execute("SELECT ProductName FROM products ;")

    if mycursor.rowcount == 0:
        products = "No Products."
    else:
        products = ""
        for row in mycursor.fetchall():
            products += "{ProductName} ".format(**row)

对于上面的代码,我得到了下面的错误:

str.format() argument after ** must be a mapping, not tuple

推荐答案

要修复遇到的错误,需要确保在使用format()方法时将row视为映射.因为fetchall()返回一个元组列表,所以您应该按索引访问每个元组的元素.以下是更正后的代码:

mycursor.execute("SELECT ProductName FROM products ;")

if mycursor.rowcount == 0:
    products = "No Products."
else:
    products = ""
    for row in mycursor.fetchall():
        products += "{0}\n".format(row[0])

100

  • row[0]访问从数据库查询结果中提取的每个元组的第一个(在本例中是唯一的)元素.
  • "{0}\n".format(row[0])格式化检索到的产品名称,并在每个产品后添加一个新行字符,以将它们放在字符串中的单独行中.

This should resolve the error;)

Python-3.x相关问答推荐

使用Polars阅读按日期键分区的最新S3镶木地板文件

如何使用Python将嵌套的XML转换为CSV

如何将参数/值从测试方法传递给pytest的fixture函数?

基于另一个数据帧计算总和

如何使用正则表达式通过反向搜索从链接中获取特定文本

对大型数据框中的选定列进行重新排序

使用 Python 截断并重新编号对应于特定 ID/组的列

无法提出给定 for 循环的原因 (Python 3.11)

段落中句子的索引

如何查找 tensorflow.python.data.ops.dataset_ops.MapDataset 对象的大小或形状,make_csv_dataset 的输出

是否将dict转换为一个数据帧,每个值都有重复的键?

类型提示和链式赋值以及多重赋值

Pandas 将列格式化为货币

错误:预期语句,发现 py:Dedent

pysftp vs. Paramiko

Pylint 给我最后的新行丢失

Python 3.5:async with导致 SyntaxError.为什么?

将 numpy.float64 列表快速转换为 Python 中的浮点数

TypeError: write() 参数必须是 str,而不是字节(Python 3 vs Python 2)

在 Meta 中创建具有动态模型的通用序列化程序