将数据存储到引用另外两个表

时间:2016-05-02 10:56:40

标签: python postgresql

我在PostgreSQL数据库中创建了3个表,如下所示:

--- "Balance sheet", etc..
CREATE TABLE statement (
[id]      int NOT NULL PRIMARY KEY,
[name]    varchar(255) NOT NULL,
companyId      int NOT NULL,
FOREIGN KEY (companyId) REFERENCES company ([id]),
);

--- "Tangible assets", "Outstanding stock", etc
CREATE TABLE statementRow (
[id]      int NOT NULL PRIMARY KEY,
statementId int NOT NULL,
rowOrder  int NOT NULL,
rowTitle  varchar(255) NOT NULL,
FOREIGN KEY (statementId) REFERENCES statement ([id]),
);

--- The Facts
CREATE TABLE statementFact (
statementRowId int NOT NULL,
[date]         date NOT NULL,
amount         numeric NULL,
PRIMARY KEY ([date], statementRow),
FOREIGN KEY (statementRowId) REFERENCES statementRow ([id])
);

问题是,当我正在抓一个页面并为一些公司得到一个值“100”时,让我们在“库存”行的“资产负债表”声明中说“AAA”。

我如何连接前两张表statement&的所有这些内容。 statementRow表,以确保我使用Python将amount列中的值插入statementRowId表中statementFact列旁边的正确行?

我尝试了很多次,但一直得到错误的价值,任何人都可以帮助我吗?

更新

我使用的上次查询:

cur.execute("SELECT * FROM statement AS st INNER JOIN statementsRow USING (statement_id)")
result = [row[0] for row in cur.fetchall()]

query = "INSERT INTO statementsFact (date, amount) VALUES (%s, %s)"
cur.executemany(query, statementRowId)
con.commit()

另外我不知道是否应该使用JOIN来连接相关的数据还是有一种简单的方法?

使问题更清晰:

如何在amount表中插入值(statementFact)并使用右行(statementRowId),考虑其他表中的其他相关列?

0 个答案:

没有答案