我试图从数据库中选择多个列,但不是所有列.我想要选择的所有列都将以"word"开头.
所以在伪代码中我想这样做:
SELECT "word%" from searchterms where onstate = 1;
Run Code Online (Sandbox Code Playgroud)
或多或少.我没有找到任何关于如何做到这一点的文档 - 在MySQL中是否可能?基本上,我试图将一个单词列表存储在一行中,并带有一个标识符,我想在拉取记录时将所有单词与该标识符关联起来.所有单词都将作为字符串连接,并使用其标识符传递给数组/字典中的另一个函数.
我试图尽可能多的数据库调用,以保持快速的代码.
好的,这是你们的另一个问题:
将有可变数量的列,其中包含名称"word".为每行执行单独的数据库调用会更快,每行生成一次Python查询,或者简单地选择SELECT*会更快,并且只使用我需要的列吗?是否可以说SELECT*NOT XYZ?
Mar*_*ers 10
不,SQL没有为您提供执行此类选择的任何语法.
您可以做的是首先向MySQL询问列名列表,然后根据该信息生成SQL查询.
SELECT column_name
FROM information_schema.columns
WHERE table_name = 'your_table'
AND column_name LIKE 'word%'
Run Code Online (Sandbox Code Playgroud)
让我们选择列名.然后你可以用Python做:
"SELECT * FROM your_table WHERE " + ' '.join(['%s = 1' % name for name in columns])
Run Code Online (Sandbox Code Playgroud)
我建议使用SQLAlchemy来代替使用字符串连接,而不是使用字符串连接.
但是,如果您所做的只是限制列数,则根本不需要执行这样的动态查询.数据库的艰苦工作是选择行; 向你发送10列中的5列或全部10列几乎没有什么区别.
在这种情况下,只需使用a "SELECT * FROM ..."
并使用Python从结果集中挑选出列.