我有一个在MySQL数据库中创建3个表的类,我希望这些表与第一个表的主键和链接到该主键的其他表中的外键连接
我已经在Python中使用SQLAlchemy构建了它
class Database:
def __init__(self):
self.engine = sqlalchemy.create_engine(
'mysql+mysqldb://{}:{}@{}/{}'.format(self.USER, self.PASSWORD,
self.HOST, self.DB_NAME))
self.create_strategies_table()
self.create_renko_bars_table()
self.create_trades_table()
def create_strategies_table(self):
meta = MetaData()
self.strategies = Table(
'strategies',
meta,
# PRIMARY KEY
Column('id', CHAR(32), primary_key=True, nullable=False),
Column('start_time', DATETIME, nullable=False),
Column('symbol', TEXT(), nullable=False),
Column('brick_size', DOUBLE(), nullable=False),
Column('method', TEXT(), nullable=False),
Column('entry_points', TEXT(), nullable=True),
Column('exit_points', TEXT(), nullable=True),
Column('take_profit', INTEGER(), nullable=True),
Column('stop_loss', INTEGER(), nullable=True),
Column('balance', DOUBLE(), nullable=True),
Column('trades', INTEGER(), nullable=True),
)
meta.create_all(self.engine, tables=[self.strategies], checkfirst=True)
def create_renko_bars_table(self):
meta = MetaData()
self.renko_bars = Table(
'renko_bars',
meta,
# ADD FOREIGN KEY HERE -> strategies.id
Column(CHAR(32), ForeignKey('strategies.id'), nullable=False),
Column('price_last', DOUBLE(), nullable=False),
Column('price_renko', DOUBLE(), nullable=False),
Column('price_min', DOUBLE(), nullable=False),
Column('price_max', DOUBLE(), nullable=False),
Column('dt_start', DATETIME(), nullable=False),
Column('dt_end', DATETIME(), nullable=False),
Column('trend', INTEGER(), nullable=False),
Column('volume', BIGINT(), nullable=False),
Column('count', INTEGER(), nullable=False),
Column('cons_up', INTEGER(), nullable=False),
Column('cons_down', INTEGER(), nullable=False),
)
meta.create_all(self.engine, tables=[self.renko_bars], checkfirst=True)
def create_trades_table(self):
meta = MetaData()
self.trades = Table(
'trades',
meta,
# ADD FOREIGN KEY HERE -> strategies.id
Column(CHAR(32), ForeignKey('strategies.id'), nullable=False),
Column('symbol', TEXT(), nullable=False),
Column('side', INTEGER(), nullable=False),
Column('size', BIGINT(), nullable=False),
Column('entry_time', DATETIME(), nullable=False),
Column('exit_time', DATETIME(), nullable=False),
Column('entry_price', DOUBLE(), nullable=False),
Column('exit_price', DOUBLE(), nullable=False),
Column('entry_reason', TEXT(), nullable=True),
Column('exit_reason', TEXT(), nullable=True),
Column('pal', DOUBLE(), nullable=False),
Column('net_pal', DOUBLE(), nullable=False),
Column('commissions', DOUBLE(), nullable=False),
)
meta.create_all(self.engine, tables=[self.trades], checkfirst=True)
我在其他线程中注意到,其他线程正在使用SQLAlchemy构建模型(一个类)来构造表,我不确定您将如何以我使用它的方式来实现它
在这里实现上述外键的正确方法是什么
谢谢大家!
目前没有回答
相关问题 更多 >
编程相关推荐