python - 是否可以在 python 中将单列结果作为字符串而不是数组获取?
问题描述
我想知道是否可以从数据库中获取数据作为字符串而不是结果集数组
问题是我需要从数据库表中获取的字符串数组
Table `example`
+-------------+
| id, name |
| 1, string1 |
| 2, string2 |
| 3, string3 |
+-------------+
现在,如果我使用光标从中获取
cursor.execute("SELECT DISTINCT `name` FROM `example`")
rs = cursor.fetchall()
我得到的结果是:
rs = [['string1'], ['string2'], ['string3']]
我想要实现的是:
rs = ['string1', 'string2', 'string3']
现在为了实现它,我遍历所有获取的结果并将其转换为这样的新数组:
newArr = []
for row in rs:
newArr.append(row[0])
有没有更快的方法来得到这个结果?
我想这样做的原因是因为我想检查一个字符串是否存在于数组中
if "string4" in newArr:
doSomething()
我正在尝试以这种方式执行此操作,因为我不想为每个字符串发送我正在检查数据库的查询并执行类似的操作
for somestring in stringArray:
cursor.execute("SELECT `name` FROM `example` WHERE `name` = %s", (somestring,))
rs = cursor.fetchall()
if len(rs) > 0:
doSomething()
因为我要检查大约 20k 个字符串,所以我认为首先从数据库中获取所有字符串作为数组然后检查它是否存在于数组中会更快。
那么你认为实现我目标的最快方法是什么?是否可以直接从数据库中获取结果作为字符串而不是数组?
谢谢你的时间!
解决方案
itertools 库有一个链函数,可以取消列出传入的可迭代对象
from itertools import chain
rs = [['string1'], ['string2'], ['string3']]
list(chain(*rs))
会产生如下结果
推荐阅读
- c# - 重定向登录按钮
- node.js - 我无法启动我的反应服务器..我不知道该怎么办!还删除了缓存并再次安装了节点模块
- python - 将集合转换为可散列类型
- c# - EF Core Exception Microsoft.EntityFrameworkCore.DbUpdateException 不确定为什么会抛出这个异常
- http - 在 Fiddler 中,确定下载资源(如图像、js、css)所花费的时间
- python - 如何在 tkinter 画布上创建文本并更改画布中的文本?
- python - 在创建两个模型之后创建两个模型之间的关系。(Python、Django、SQLite)
- python - 在 Column pandas 中查找字符最少的值
- python - 如何解决这个“属性错误,:load_multiclass_scores”?
- c# - 未找到新的 API 控制器