微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 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 举报,一经查实,本站将立刻删除。