问题标签 [sqlalchemy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
650 浏览

database-design - 数据库中的个人消息系统

我是数据库新手,想知道如何最好地将个人消息存储在数据库中(使用 SQLAlchemy)。

因为我不确定,所以我为 PM 尝试了下表

然后这是映射的

我收到以下错误消息:

无法确定关系 User.messages_sent 上的父/子表之间的连接条件。指定一个“primaryjoin”表达式。如果这是多对多关系,则还需要“辅助连接”。

据我目前了解,这是一对多的关系,但同一个类有两个外键。这甚至是正确的方法还是我应该有两张桌子,messages_sent并且messages_received?还是别的什么?任何指向正确方向的指针都将不胜感激。

编辑:
澄清一下,我正在寻找一个很好的数据库设计模式来解决这个问题。如果有人可以帮助使用 SQLAlchemy,那就太好了,但绝不是必要的。

但是from_id-column 将是发送者的用户 ID,而to_id将是接收者的用户 ID?

确切地。

您的代码示例不完整。

我试图在这篇文章中省略不必要的代码,似乎我走得太远了。以下是缺少的定义。

0 投票
2 回答
3974 浏览

python - sqlalchemy - 对项目进行分组并遍历子列表

考虑这样的表:

我想编写一个 sqlalchemy 查询语句来列出所有具有最大版本的项目(作为映射器对象,而不仅仅是名称列)Foo-2-b, Bar-5-c, Baz-5-f:. 我知道我必须使用该group_by方法,但除此之外,我对如何检索子列表(然后找到最大元素)感到困惑。SQLAlchemy 文档对此显然不是很清楚。

在实际场景中,还有许多其他列(如“其他”) - 这就是为什么我需要返回实际的行对象(映射器类)而不仅仅是“名称”值。

0 投票
1 回答
3885 浏览

python - SQLAlchemy - 尝试急切加载..属性错误

我使用 SQLAlchemy 访问一个 postgres 表。我想要一个具有急切加载的查询。

AttributeError 失败:“ColumnProperty”对象没有属性“mapper”

一个没有预先加载的正确返回记录。

我是 SQLAlchemy 的新手。我不确定问题是什么。任何指针?

0 投票
1 回答
1556 浏览

python - SQLAlchemy(Postgres)和事务

我希望选择表(队列)中的记录,锁定(没有其他进程可以编辑此记录)并在以后的时间点更新。
我假设如果我将整个查询和更新放在一个事务中,没有其他进程可以编辑/查询相同的记录。但我不太能够做到这一点。

如果我启动 2 个进程,它们都会更新相同的记录。我不确定我是否正确创建了连接/会话/事务。任何指针?

0 投票
2 回答
6330 浏览

python - 如何使用 SQLAlchemy 将一个类映射到多个表?

假设我有一个包含三个表的数据库结构,如下所示:

我希望能够在 SQLAlchemy 中做到这一点:

我是 SQLAlchemy 的新手,我在文档中找到了这个(http://www.sqlalchemy.org/docs/05/mappers.html#mapping-a-class-against-multiple-tables):

它只会将 item_id 和 attribute_id 添加到 Item 中,而不能将属性添加到 Item 对象。

我想用 SQLAlchemy 实现的目标是什么?有没有更好的方法来构建数据库以获得“动态列”的相同行为?

0 投票
2 回答
192 浏览

python - mod_python 问题?

当我遇到一个奇怪的问题时,我一直在使用 mod_python、python 和 SQL Alchemy 开发一个网站:当我在数据库中查询所有记录时,它返回了正确的结果集;但是,当我刷新页面时,它会返回一个结果集,并附加了相同的结果集。当我更多地刷新页面时,我得到更多的结果集“堆叠”在彼此之上。

例如:

第一页加载:10 个结果

第二页加载:20 个结果(每个两个)

第三页加载:30 个结果(每个三个)

ETC...

这是 mod_python 的一些潜在问题吗?我不记得在使用 mod_wsgi 时遇到过这种情况。

0 投票
2 回答
5315 浏览

python - 是否有任何 Python ORM(SQLAlchemy?)可与 Google App Engine 一起使用?

我想使用 Python 版本的 App Engine,但不是专门为 Google Data Store 编写代码,而是想使用可以附加到 Big Table 的通用 Python ORM 创建我的模型,或者,如果我更喜欢在以后的某个时间使用常规数据库。是否有任何 Python ORM(例如 SQLAlchemy)允许这样做?

0 投票
1 回答
1425 浏览

sqlalchemy - 不同数据库中同一类的多个映射器

我目前正在开发一个 Wikipedia API,这意味着我们为每种想要使用的语言都有一个数据库。每个数据库的结构都是相同的,它们只是语言不同。存储此信息的唯一位置是数据库名称。

当从一种语言开始时,使用表与所需类(例如页面)之间的映射的直接方法看起来很好。我们定义了一个引擎和相应的元数据。当我们为引擎和元数据添加第二个数据库时,我们遇到了以下错误:

我发现一封电子邮件说必须至少有一个主映射器,因此对所有数据库使用此选项似乎不可行。

下一个想法是使用分片。为此,我们需要一种从实例的角度区分数据库的方法,如文档中所述

“您需要一个可以返回单个分片 ID 的函数,给定一个要保存的实例;这称为“shard_chooser”

我被困在这里。有没有办法在给定加载它的对象的情况下获取数据库名称?还是可以根据引擎添加静态属性?另一种方法是为每个丑陋的表添加一个语言列。我是否在监督其他可能性?任何想法如何为同一个类定义多个映射器,映射到不同数据库中的表?

0 投票
8 回答
99445 浏览

python - sqlalchemy flush() 并获取插入的 ID?

我想做这样的事情:

但是f.idNone我尝试它时。我怎样才能让它工作?

0 投票
3 回答
568 浏览

python - 这是避免使用 SQLAlchemy/SQLObject 的好方法吗?

我没有使用 ORM,而是考虑在没有 ORM(SQLObject/SQLAlchemy)的 Python 和 MySQL 中使用以下方法。我想就这是否可能产生任何负面的长期后果得到一些反馈,因为从短期来看,据我所知,这似乎很好。

而不是将数据库中的一行转换为对象:

  • 每个表都由一个类表示
  • 将一行作为字典检索
  • 表示游标的对象提供对表的访问,如下所示:

    cursor.mytable.get_by_ids(低,高)

  • 移除意味着将 time_of_removal 设置为当前时间

所以基本上这消除了对 ORM 的需要,因为每个表都有一个类来表示它,并且在该类中,一个单独的 dict 表示每一行。

类型映射很简单,因为作为 python/blub 中的第一类对象的每个 dict(行)允许您知道对象的类,此外,Python 中的低级数据库库处理字段级别的类型转换为它们相应的应用程序级别类型。

如果您在这条路上发现任何潜在的问题,请告诉我。谢谢。