在 Python 中使用 SQLAlchemy ORM 在 MySQL 中创建外键

问题描述

我有以下类在 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,Column('symbol',TEXT(),Column('brick_size',DOUBLE(),Column('method',Column('entry_points',nullable=True),Column('exit_points',Column('take_profit',INTEGER(),Column('stop_loss',Column('balance',Column('Trades',)
        Meta.create_all(self.engine,tables=[self.strategies],checkfirst=True)

    def create_renko_bars_table(self):
        Meta = MetaData()
        self.renko_bars = Table(
            'renko_bars',# ADD FOREIGN KEY HERE -> strategies.id
            Column(CHAR(32),ForeignKey('strategies.id'),Column('price_last',Column('price_renko',Column('price_min',Column('price_max',Column('dt_start',DATETIME(),Column('dt_end',Column('trend',Column('volume',BIGINT(),Column('count',Column('cons_up',Column('cons_down',tables=[self.renko_bars],checkfirst=True)

    def create_Trades_table(self):
        Meta = MetaData()
        self.Trades = Table(
            'Trades',Column('side',Column('size',Column('entry_time',Column('exit_time',Column('entry_price',Column('exit_price',Column('entry_reason',Column('exit_reason',Column('pal',Column('net_pal',Column('commissions',tables=[self.Trades],checkfirst=True)

我在其他线程中注意到其他人正在使用 sqlAlchemy 来构建模型(一个类)来构建表,我不确定您会如何按照我使用它的方式进行操作。

在这里实现所述外键的正确方法是什么?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)