我在python中显示左连接的结果时出现问题。问题在于:
我有两张桌子。一个Customers表和一个Weights表,用于跟踪每个客户的权重记录。
客户表:
pID Name
01 John
02 Charlotte
权重表:
wID pID Weight
01 01 90
02 01 93
03 01 92
04 02 76
05 02 74
当我将左连接存储在python游标中时,我得到了这个结果。
pID Name wID Weight
01 John 01 90
01 John 02 93
01 John 03 92
02 John 04 76
02 John 05 74
我的目标是展示:
pID: 01
Name: John
wID: 01 Weight: 90
wID: 02 Weight: 93
wID: 03 Weight: 92
pID: 02
Name: Charlotte
wID: 04 Weight: 76
wID: 05 Weight: 74
现在是Python代码。我有一个Customer类,用于存储人员ID,名称和一个包含为该人注册的所有权重的数组。
因此,我希望将所有客户及其权重存储在一个名为customers的列表中。
customers = []
query = "SELECT * FROM customers LEFT JOIN weights ON customers.idcustomers = weigths.idcustomers"
try:
self.cur = self.connect()
self.cur.execute(query)
queryResults = self.cur.fetchall()
self.desconectar()
except Exception as e:
print(e)
pass
for row in queryResults:
found = False
for cus in customers:
if row[0] == cus.id:
cus.weights.append(Weight(row[0],row[2],row[3]))
found = True
if found == False:
newCustomer = Customer(row[0],row[1])
newCustomer.weights.append(Weight(row[0],row[2],row[3]))
customers.append(newCustomer)
return customers
出于某种原因,我将所有权重添加到每个客户中。
结果如下:
pID: 01
Name: John
wID: 01 Weight: 90
wID: 02 Weight: 93
wID: 03 Weight: 92
wID: 04 Weight: 76
wID: 05 Weight: 74
pID: 02
Name: Charlotte
wID: 01 Weight: 90
wID: 02 Weight: 93
wID: 03 Weight: 92
wID: 04 Weight: 76
wID: 05 Weight: 74
我已经尝试了一段时间来解决这个问题,而且我真的不知道为什么每个人都在存储每一个重量。
此代码是原始脚本的简化版本,我希望我不会搞砸!
欢迎任何帮助..提前致谢!
编辑:查询结果是正确的,我在翻译SQL行时犯了一个错误。
失败的是python代码。
答案 0 :(得分:0)
确保您在两个表格中加入pID
。
我不确定您是如何定义这些类的,但似乎JOIN
query
条件加入了pID
wID
query = "SELECT * FROM customers LEFT JOIN weights ON customers.idcustomers = weighs.idweights"
{1}}:
LEFT JOIN
因此,请检查Python
的结果,确保结果符合您的预期。
然后,转到追加结果的Weight
逻辑。但我认为应该没问题。
PS:班级Peso
和Regex.Match("1) Exception Information", @"(\d)\) Exception Information").Groups[1].Value
之间是否存在差异?