【问题标题】:Table design for SQLAlchemy/MySQLSQLAlchemy/MySQL 的表设计
【发布时间】:2012-08-15 03:41:09
【问题描述】:

我在 MySQL 中创建了一个包含以下表格的数据库

Attachment
Sender
Recipient
Message
mr_link
ms_link
ma_link

发件人和收件人是不同的电子邮件地址表 mr_link 包含消息的 ID 及其关联的收件人(每条消息每个收件人一个条目)

ms_link 具有消息的 ID 及其关联的发件人

ma_link 具有消息的 ID 及其关联文件

我最近发现了 SQLAlchemy,并且喜欢它如何让我的查询等更有效率。

我现在要做的是将这个现有架构转换为具有关系的表,但我的 MySQL-fu 和 SQLAlchemy-fu 仍处于早期阶段。

我是来寻求指导的。

谢谢, 拉里

【问题讨论】:

  • 我不确定有多少人能真正“回答”这个问题。 “如何将我的 MySQL 表映射到 SQLAlchemy”实际上是阅读 documentation 的问题。您对 SQLAlchemy 中的映射项目有什么具体问题吗?如果您甚至不知道从哪里开始,您应该浏览tutorial 并确保您了解发生了什么。然后,将这些知识扩展到您自己的项目中。

标签: python mysql sqlalchemy


【解决方案1】:

在 SA 中实现模型时,您有一个主要选择,即在使用 ORM 和使用直接 SQL 构造之间。起初这可能会令人困惑,因为它们具有相似的方法和行为。在您开始深入研究时,根据您使用的类来考虑它们可能会很有用:

  • 使用 SQL i/f,您将主要使用表
  • 使用 ORM,您将主要处理您的类(消息、收件人、发件人等)

在任何一种情况下,您都可能会发现自己首先实现了主要实体,然后继续设置它们之间的多对多关系。 SA 做了一些很棒的事情,但它很深。我建议给自己一些时间来完成这些工作。

为此,我建议您花一些时间在the Object Relational TutorialMany-to-Many section 中的 BlogPost/Keyword 示例与您的用例有一些共同的有用特征,应该为您提供一个起点。

【讨论】:

  • 我不会在 SQLAlchemy 的“核心”和“orm”方面划清界限;我发现自己经常使用both!特别是,在处理核心应用程序功能时,我倾向于使用 orm;业务规则等;而是将数据作为一个整体处理时的核心 sql 表达式接口:报告、数据迁移或批量更改。
  • @TokenMacGuy - 完全同意你的看法。实际上,我试图表明您以基本相同的方式使用 SA,但区别主要在于您操作哪些类(您的问题域与 SQL 关系域)。
猜你喜欢
  • 2018-09-04
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多