MySQL Python 查询行名与列名匹配

MySQL Python Query matching row name with column name

我正在构建一个软件,将一些化学物质组合成不同的化合物(每个化合物可以有 1、2、3 或 4 种化学物质),但有些化学物质不能与其他化学物质结合。

我的 mysql 数据库中有一个 table,其中包含以下列: chemical_id、化学名称,以及我列表中每种化学品的一列。 每行都有一种化学物质。字段中的值告诉我这两种化学物质是否可以混合在一起(1 或 0)。所以所有的化学品都有一行和一列。它们也是按照相同的顺序创建的。这里(虚拟数据):https://imgur.com/a/e2Fbq1K

我有一个 chemicals_ids 的 python 列表,我要将它们与它们结合起来以生成 1、2、3 和 4 种化学物质的化合物,但我需要一个函数来确定是否任何两个都不兼容。

我试图与 INFORMATION_SCHEMA COLUMN_NAME 混在一起,但我有点迷路了。 像这样的循环会起作用,但语法不会。

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 的初学者,所以任何光线都将不胜感激。 谢谢!

我听从了@Akina 的建议并制作了一个新的 table 包含成对的化学品和每对的相容性值。

我还了解到,除了占位符 %s 之外,它只能用于 python 游标 sql 执行语句的值,您也可以通过执行以下操作来使用 py 变量:

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

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