我试图从数据库中选择多个列,但不是所有列。我要选择的所有列均以“ word”开头。
所以我想用伪代码做到这一点:
SELECT "word%" from searchterms where onstate = 1;
或多或少。我没有找到有关如何执行此操作的任何文档- MySQL中可能吗?基本上,我试图在一行中存储一个带有标识符的单词列表,并且当我提取记录时,我想将所有单词与该标识符关联。所有单词都将作为字符串连接在一起,并带有其标识符传递给数组/字典中的另一个函数。
我正在尝试进行FEW数据库调用,以保持快速的代码。
好的,这是你们的另一个问题:
将有数量可变的列,其中名称为“ word”。对每一行进行单独的数据库调用会更快,每行都会生成一个Python查询,还是仅选择SELECT *并仅使用我需要的列会更快?可以说SELECT * NOT XYZ吗?
不,SQL不提供任何语法来进行此类选择。
您 可以 做的是先要求MySQL提供列名列表,然后根据该信息生成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列或10列中发送5列几乎没有什么区别。
在这种情况下,只需使用,"SELECT * FROM ..."然后使用Python从结果集中选择列即可。
"SELECT * FROM ..."