我正在尝试从两个表中打印一个结果列表。这是我的桌子:
cursor.execute('''
CREATE TABLE IF NOT EXISTS measures(
rainID DATE PRIMARY KEY,
rain FLOAT (15,2) NOT NULL,
level_of_dam FLOAT (15,2) NOT NULL,
level_of_lochan FLOAT (15,2) NOT NULL);
''')
db.commit()
cursor.execute('''
CREATE TABLE IF NOT EXISTS turbine(
rainID DATE PRIMARY KEY,
pressure FLOAT (20,3) NOT NULL,
power FLOAT (20,3) NOT NULL,
deflector VARCHAR (5),
electricity FLOAT (20,3) NOT NULL);
''')
db.commit()
我正在使用它来“获取”措施:
def getMeasures():
with sqlite3.connect ("rainfall123.db") as db:
cursor.execute("SELECT * FROM measures,turbine")
all_data = cursor.fetchall()
all_data1 = (['Date','Rainfall','Dam','Lochan'])
dash = '-' * 41
for i in range(len(all_data)):
if i == 0:
print(dash)
print('{:<10s}{:>10s}{:>5s}{:>14s}'.format(all_data1[0],all_data1[1],all_data1[2],all_data1[3]))
print(dash)
else:
print('{:<12s}{:>4s}{:>12s}{:>12s}'.format(all_data[i][0],all_data[i][1],all_data[i][2],all_data[i][3]))
目前,我可以打印出第一张桌子,我已经尝试了几种方法将它们都固定在一起-但要单独进行-我希望获得一些帮助。
理想情况下,我想要的是能够将两个表打印到同一张打印表中。
答案 0 :(得分:0)
使用您的SQL SELECT语句,您将获得以下结果
rainID | rain | level_of_dam | level_of_lochan | rainID | pressure | power | deflector | electricity
但是使用getMeasures()
时,您仅调用每行的前3个项目,因此您会错过该数据和其他数据。
我认为您想要做的是从您的RainID相等的表中获取对应的数据。因此,您需要执行内部联接。
cursor.execute("SELECT * FROM measures INNER JOIN turbine ON measures.rainID = turbine.rainID")
现在,您需要连续调用所有单元格。从all_data[i][0]
到all_data[i][8]