不使用主键创建具有一对多关系的表

西蒙

因此,我试图在这两个表之间实现简单的一对多关系。我已经阅读了文档,刮了一下网,做了很多工作来解决这个问题,所以我请您解决。

我拥有对数据库的完全访问权限,并且能够创建其他具有相似关系的表。

我正在使用mariadb,“ mysql”。

表Tradable中的每一行都有一个tick_size_id,而每一行都有一个tick_size_id。我想将它们与该专栏联系起来,我似乎无法弄清楚该如何做。

base = declarative_base()
class Tradables(base):
    __tablename__ = "tradables"

    id = Column(Integer, primary_key=True)
    tick_size_id = Column(Integer, nullable=False)
    ticks = relationship("Ticks")


class Ticks(base):
    __tablename__ = "ticks"

    id = Column(Integer, primary_key=True)
    tick_size_id = Column(Integer, ForeignKey("tradables.tick_size_id"))


def main():
    engine = create_engine("mysql+pymysql://user:password@localhost/database?host=localhost?port=3306")
    base.metadata.create_all(engine)


if __name__ == '__main__':
    main()

这是行不通的。

并失败:

sqlalchemy.exc.InternalError:(pymysql.err.InternalError)(1005,'无法创建表Tradingticks(errno:150“外键约束格式不正确”))')[SQL:'\ n

CREATE TABLE ticks (\n\t
    id INTEGER NOT NULL AUTO_INCREMENT, \n\t
    tick_size_id INTEGER, \n\t
    PRIMARY KEY (id), \n\t
    FOREIGN KEY(tick_size_id) REFERENCES tradables (tick_size_id)\n)\n\n']

我究竟做错了什么?


编辑:

尝试了这两个创建顺序,并且都给出了相同的结果。

base.metadata.tables["ticks"].create(bind=engine)
base.metadata.tables["tradables"].create(bind=engine)

base.metadata.tables["tradables"].create(bind=engine)
base.metadata.tables["ticks"].create(bind=engine)
埃伦斯特

您需要在上有一个索引tradables.tick_size_id我不是炼金术士,但我想那就像

...
__tablename__ = "tradables"

id = Column(Integer, primary_key=True)
tick_size_id = Column(Integer, nullable=False, index=True)
ticks = relationship("Ticks")
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建具有一对多关系的mysql表

来自分类Dev

创建具有一对多关系的FriendlyId

来自分类Dev

使用LINQ查询并创建具有一对多关系的对象

来自分类Dev

使用具有一对多关系sqlalchemy的父表过滤子表中的行

来自分类Dev

具有一对多关系的HasManyThrough

来自分类Dev

一对多关系表的主键或外键

来自分类Dev

如何使用多个参数查询与另一个表具有一对多关系的表?

来自分类Dev

插入具有一对多关系的新实体,而不在两个表中都创建记录

来自分类Dev

插入具有一对多关系的新实体,而不在两个表中都创建记录

来自分类Dev

休眠-在子表上没有ID的一对多关系中应使用什么主键

来自分类Dev

Nhibernate Multiple表与特定表具有一对多关系

来自分类Dev

一对多关系表

来自分类Dev

通过一对多关系表仅选择具有最大字段的一行

来自分类Dev

创建具有多个一对多关系值的数据列表

来自分类Dev

在具有一对多关系的表上进行一对一左联接的最快方法(MySQL)

来自分类Dev

具有指向单个表的多个一对多关系的Entity Framework Code First配置

来自分类Dev

在两个表之间具有2个一对多关系是否可以接受?

来自分类Dev

如何从具有一对多关系的表中构建JSON行

来自分类Dev

在两个表之间具有2个一对多关系是否可以接受?

来自分类Dev

查询具有一对多关系的两个表

来自分类Dev

尝试从具有一对多关系的两个表中插入select

来自分类Dev

从具有一对多关系的 Django 表中查询相关字段

来自分类Dev

在 SQL Server 中加入具有一对多和多对多关系的 3 个表

来自分类Dev

如何合并具有一对多关系的两个表

来自分类Dev

休眠中的一对多关系创建 4 个表

来自分类Dev

具有一对多关系的Django Form

来自分类Dev

MySQL一对多关系,具有共享价值

来自分类Dev

具有一对多关系的jooq单查询

来自分类Dev

与Postgres具有一对多关系的SQL聚合查询

Related 相关文章

  1. 1

    创建具有一对多关系的mysql表

  2. 2

    创建具有一对多关系的FriendlyId

  3. 3

    使用LINQ查询并创建具有一对多关系的对象

  4. 4

    使用具有一对多关系sqlalchemy的父表过滤子表中的行

  5. 5

    具有一对多关系的HasManyThrough

  6. 6

    一对多关系表的主键或外键

  7. 7

    如何使用多个参数查询与另一个表具有一对多关系的表?

  8. 8

    插入具有一对多关系的新实体,而不在两个表中都创建记录

  9. 9

    插入具有一对多关系的新实体,而不在两个表中都创建记录

  10. 10

    休眠-在子表上没有ID的一对多关系中应使用什么主键

  11. 11

    Nhibernate Multiple表与特定表具有一对多关系

  12. 12

    一对多关系表

  13. 13

    通过一对多关系表仅选择具有最大字段的一行

  14. 14

    创建具有多个一对多关系值的数据列表

  15. 15

    在具有一对多关系的表上进行一对一左联接的最快方法(MySQL)

  16. 16

    具有指向单个表的多个一对多关系的Entity Framework Code First配置

  17. 17

    在两个表之间具有2个一对多关系是否可以接受?

  18. 18

    如何从具有一对多关系的表中构建JSON行

  19. 19

    在两个表之间具有2个一对多关系是否可以接受?

  20. 20

    查询具有一对多关系的两个表

  21. 21

    尝试从具有一对多关系的两个表中插入select

  22. 22

    从具有一对多关系的 Django 表中查询相关字段

  23. 23

    在 SQL Server 中加入具有一对多和多对多关系的 3 个表

  24. 24

    如何合并具有一对多关系的两个表

  25. 25

    休眠中的一对多关系创建 4 个表

  26. 26

    具有一对多关系的Django Form

  27. 27

    MySQL一对多关系,具有共享价值

  28. 28

    具有一对多关系的jooq单查询

  29. 29

    与Postgres具有一对多关系的SQL聚合查询

热门标签

归档