gpt4 book ai didi

python - MySQL 列名中的通配符

转载 作者:行者123 更新时间:2023-11-29 22:15:17 24 4
gpt4 key购买 nike

我正在尝试从数据库中选择多列,但不是所有列。我想要选择的所有列都将以“word”开头。

所以在伪代码中我想这样做:

SELECT "word%" from searchterms where onstate = 1;

或多或少。我没有找到任何关于如何执行此操作的文档 - 在 MySQL 中可能吗?基本上,我试图将单词列表存储在单行中,并带有标识符,并且当我提取记录时,我希望将所有单词与该标识符相关联。所有单词都将作为字符串连接起来,并与其标识符一起传递到数组/字典中的另一个函数。

我试图进行尽可能少的数据库调用,以保持快速的代码。

好的,这里还有一个问题要问你们:

将有数量可变的列,其中名称为“word”。为每行执行单独的数据库调用(每行生成一个 Python 查询)会更快吗?或者简单地 SELECT * 并仅使用我需要的列会更快吗?是否可以说 SELECT * NOT XYZ?

最佳答案

不,SQL 不提供任何语法来执行此类选择。

可以做的就是向MySQL询问a list of column names首先,然后根据该信息生成 SQL 查询。

SELECT column_name
FROM information_schema.columns
WHERE table_name = 'your_table'
AND column_name LIKE 'word%'

让您选择列名称。然后你可以在 Python 中执行以下操作:

"SELECT * FROM your_table WHERE " + ' '.join(['%s = 1' % name for name in columns])

我建议使用 SQLAlchemy 而不是使用字符串连接相反,为您生成 SQL。

但是,如果您所做的只是限制列数,则根本不需要执行这样的动态查询。数据库的艰苦工作是选择行;向您发送 10 列中的 5 列或全部 10 列没有什么区别。

在这种情况下,只需使用“SELECT * FROM ...” 并使用 Python 从结果集中挑选列。

关于python - MySQL 列名中的通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31258035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com