【发布时间】:2020-10-13 03:55:54
【问题描述】:
我正在构建一个软件来将一些化学物质组合成不同的化合物(每种化合物可以有 1、2、3 或 4 种化学物质),但有些化学物质不能与其他一些化学物质结合。
我的 mysql 数据库中有一个表,其中包含以下列: Chemical_id、chemicalName 和我列表中每种化学品的一列。 每行都有一种化学物质。字段中的值告诉我这两种化学物质是否可以在化合物中一起使用(1 或 0)。所以所有化学品都有一行和一列。它们也是以相同的顺序创建的。这里(虚拟数据):https://imgur.com/a/e2Fbq1K
我有一个化学物质 ID 的 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 的初学者,因此我将不胜感激。 谢谢!
【问题讨论】:
-
规范化您的数据结构 - 如果它们兼容(或所有对和具有兼容性值的列),您必须有两次引用物质表的联结表。
-
是的,我有 4 个不同的表用于不同类型的兼容性。我现在有一个联结表,其中包含化学 ID1、化学 ID2(均来自单个化学表上的单个 ID)和每种兼容性 (0-1) 的一列。谢谢@Akina!
标签: python mysql sql mysql-python