行名与列名匹配的mysql python查询

ckocjqey  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(303)

我正在构建一个软件,将一些化学物质组合成不同的化合物(每个化合物可以有1、2、3或4种化学物质),但有些化学物质不能与其他化学物质结合。
我在mysql数据库中有一个表,表中有以下列:chemical\u id、chemicalname,列表中的每种化学品对应一列。每行有一种化学物质。字段中的值告诉我这两种化学物质是否可以在化合物中同时存在(1或0)。所以所有的化学物质都有一行和一列。它们也是按同样的顺序被创造出来的。此处(虚拟数据):https://imgur.com/a/e2fbq1k
我有一个python的化学物质列表,我要把它和它们结合起来,生成1,2,3和4种化学物质的化合物,但是我需要一个函数来确定它们中是否有两种是不相容的。
我本来想搞乱信息,但我有点迷路了。像这样的循环可以工作,但是语法不行。

list_of_chemicals = ['ChemName1','ChemName2','ChemName3'] #etc
def verify_comp(a,b): #will be passed with chem names
mycursor.execute("SELECT chemicalName FROM chemical_compatibility WHERE chemical_id = 'ChemName1' AND 'ChemName2' = 0")

# etc

我尝试过使用%s占位符,但它似乎只适用于mysql查询的某些部分。我是python和sql的初学者,所以任何一点都会非常感激。谢谢!

kuarbcqp

kuarbcqp1#

我听从了@akina的建议,制作了一个新的表格,其中包含了成对的化学物质和每对的相容性值。
我还了解到,除了占位符%s(只能用于python cursor sql execute语句上的值)之外,还可以通过执行以下操作来使用py变量:

mycursor.execute("SELECT * FROM "+variablename+" WHERE condition = 1")

我不担心这个项目的sql注入,也不知道我在这里说的是否100%正确,但也许它可以帮助那些迷失方向的人。

相关问题