我正在设计一个股票货币应用程序,并为此创建了一个数据库。我先搜索了我的问题,这里,但回答者让我在这里问同样的问题。
flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Stock_Data(db.Model):
__tablename__ = 'stock_datas'
# Column names start with capital letter for convention to use data easier (for now)
id = db.Column(db.Integer(), primary_key=True)
Date = db.Column(db.DateTime, nullable=False)
Open = db.Column(db.Float(), nullable=False)
High = db.Column(db.Float(), nullable=False)
Low = db.Column(db.Float(), nullable=False)
Currency_Close = db.Column(db.Float(), nullable=False)
Volume = db.Column(db.Integer(), nullable=False)
# Foreign Key
stock_id = db.Column(db.Integer, db.ForeignKey('stocks.id'))
# Foreign Attribute To Reach
stock = db.relationship('Stock', backref='Stock_Data', primaryjoin='Stock_Data.stock_id==Stock.id', lazy=True)
class Stock(db.Model):
__tablename__ = 'stocks'
id = db.Column(db.Integer(), primary_key=True)
symbol = db.Column(db.String(10), unique=True)
name = db.Column(db.String(50), unique=True)
sector = db.Column(db.String(10), nullable=True)
currency = db.Column(db.String(3), nullable=False)
class Parity_Data(db.Model):
__tablename__ = 'parity_datas'
id = db.Column(db.Integer(), primary_key=True)
Parity_Close = db.Column(db.Float())
Date = db.Column(db.DateTime, nullable=False)
# Foreign Key
parity_id = db.Column(db.Integer, db.ForeignKey('parities.id'))
# Foreign Attribute To Reach
parity = db.relationship('Parity', backref='Parity_Data', primaryjoin='Parity_Data.parity_id==Parity.id', lazy=True)
class Parity(db.Model):
__tablename__ = 'parities'
id = db.Column(db.Integer(), primary_key=True)
parity_name = db.Column(db.String(8), unique=True)我创建了这个数据库设计--所有的类都在单独的文件中。Sotck与Stock_Data (1-N)相关,奇偶度与Parity_Data (1-N)相关。
我正在建立股票和平价之间的联系
string_stock = 'APPL'
stock = session.query(Stock).filter(Stock.symbol == str(string_stock).upper()).first()
stock_data = session.query(Stock_Data).filter(Stock_Data.stock_id == stock.id).all()
parity = session.query(Parity).filter(Parity.parity_name.endswith(stock.currency)).first()
parity_data = session.query(Parity_Data).filter(Parity_Data.parity_id==parity.id).all()通过这种方法,我可以分别获取所有的stock_data和parity_data。但是,当我试图合并stock_data和parity_data时,我会得到两个列表,因此不能合并。在那之后,我试过
data_joined_on_time = session.query(Stock_Data).join(Parity_Data, Stock_Data.Date == Parity_Data.Date).all()
dir(session.query(Stock_Data).join(Parity_Data, Stock_Data.Date == Parity_Data.Date).all()[0]) 这个方法连接数据,但是属性:电流_关闭,日期,高,低,打开,音量,class“,”delattr“,”dict“,”dir“,”doc“,”eq“,”format“,”ge“,”getattribute“,”gt“,”hash“,”init“,”init“,”le“,”lt“,”mapper“,”module“,”ne“,”new“,”reduce“,”reduce“,”repr“,”setattr“,”sizeof“,”str“,”subclasshook“,”table“,”tablename“,“弱引用”、“_德克_班级_登记处”、“_sa_班级_经理”、‘_sa_实例_状态’、id‘、’元数据‘,’查询‘,’查询‘_类,股票,股票_id’
没有任何关于Parity_Data的部分。
我的问题包括两部分:
发布于 2021-05-27 20:47:08
最后,我用了熊猫。
df = pandas.read_sql_query("""My join query""")这一切都解决了我的问题。
https://codereview.stackexchange.com/questions/252767
复制相似问题