将两个单独的表打印到同一列表中

时间:2018-11-14 11:11:01

标签: python sqlite

我正在尝试从两个表中打印一个结果列表。这是我的桌子:

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]))

目前,我可以打印出第一张桌子,我已经尝试了几种方法将它们都固定在一起-但要单独进行-我希望获得一些帮助。

理想情况下,我想要的是能够将两个表打印到同一张打印表中。

1 个答案:

答案 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]