Python 在Sqlalchemy中,我可以添加一个带有“的列吗?”;源表“;联合会的名字?
我有这两张桌子——销售和采购。然后是与他们相关的“股票”。顺便说一下,这是炼金术,但我不知道这是否重要Python 在Sqlalchemy中,我可以添加一个带有“的列吗?”;源表“;联合会的名字?,python,sql,flask,sqlalchemy,flask-sqlalchemy,Python,Sql,Flask,Sqlalchemy,Flask Sqlalchemy,我有这两张桌子——销售和采购。然后是与他们相关的“股票”。顺便说一下,这是炼金术,但我不知道这是否重要 class Sales(db.Model): __tablename__ = "sales" id = db.Column(db.Integer, primary_key=True) stock_id = db.Column(db.Integer, db.ForeignKey( 'stocks.id'), nullable=False) user
class Sales(db.Model):
__tablename__ = "sales"
id = db.Column(db.Integer, primary_key=True)
stock_id = db.Column(db.Integer, db.ForeignKey(
'stocks.id'), nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
amount = db.Column(db.Integer, nullable=False, default=1)
unit_price = db.Column(db.Numeric, nullable=False)
total_price = db.Column(db.Numeric, nullable=False)
time = db.Column(db.DateTime, nullable=False,
default=datetime.datetime.utcnow())
class Purchases(db.Model):
__tablename__ = "purchases"
id = db.Column(db.Integer, primary_key=True)
stock_id = db.Column(db.Integer, db.ForeignKey(
'stocks.id'), nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
amount = db.Column(db.Integer, nullable=False, default=1)
unit_price = db.Column(db.Numeric, nullable=False)
total_price = db.Column(db.Numeric, nullable=False)
time = db.Column(db.DateTime, nullable=False,
default=datetime.datetime.utcnow())
class Stock(db.Model):
__tablename__ = "stocks"
id = db.Column(db.Integer, primary_key=True)
symbol = db.Column(db.String(), nullable=False, unique=True)
name = db.Column(db.String, nullable=False)
我需要对整个交易做一个概述(然后将其与Stock表连接起来,以便能够看到正在出售/购买的产品的名称)
这两张桌子是一样的。唯一的区别是一个是销售,一个是购买。我需要在查询产生的数据中明确这一点——哪些行来自“销售”,哪些行来自“采购”
您可以将
标签
功能与文本
功能结合使用来创建“源”列
from sqlalchemy.sql import text
q1 = db.session.\
query(
text("Purchases").label("SourceTable"),
Purchases.stock_id.label("PurchaseStockId")
Stock.id.label("StockId")).\
join(
Purchases,
Purchases.stock_id == Stock.id)
q2= db.session.\
query(
text("Sales").label("SourceTable"),
Sales.stock_id.label("SalesStockId"),
Stock.id.label("StockId")).\
join(
Sales,
Sales.stock_id == Stock.id)
q3 = q1.union(q2).all()
您可以将
标签
功能与文本
功能结合使用来创建“源”列
from sqlalchemy.sql import text
q1 = db.session.\
query(
text("Purchases").label("SourceTable"),
Purchases.stock_id.label("PurchaseStockId")
Stock.id.label("StockId")).\
join(
Purchases,
Purchases.stock_id == Stock.id)
q2= db.session.\
query(
text("Sales").label("SourceTable"),
Sales.stock_id.label("SalesStockId"),
Stock.id.label("StockId")).\
join(
Sales,
Sales.stock_id == Stock.id)
q3 = q1.union(q2).all()
但是,如果要把所有的东西都放在一行,那不是会把购买和销售混为一谈吗?我想到了union,因为我需要一个输出,其中销售和购买作为单独的行显示。相同ID的同一只股票可以在不同的时间点进行多次买卖。但是,如果要把所有股票都放在一行,这难道不会混淆买卖吗?我想到了union,因为我需要一个输出,其中销售和购买作为单独的行显示。相同ID的同一股票可以在不同时间点多次买卖。