问题标签 [peewee]

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 投票
1 回答
2376 浏览

sql - peewee 可以嵌套 SELECT 查询,以便外部查询选择内部查询的聚合吗?

我将 peewee2.1 与 python3.3 和 sqlite3.7 数据库一起使用。

我想执行某些 SELECT 查询,其中:

  1. 我首先选择一些聚合(计数,总和),按一些 id 列分组;然后
  2. 然后,我从 (1) 的结果中进行选择,对其聚合进行聚合。具体来说,我想计算 (1) 中具有每个聚合值的行数。

我的数据库有一个“事件”表,每个事件有 1 条记录,还有一个“票”表,每个事件有 1..N 个票。每个工单记录都包含事件的 id 作为外键。每张票还包含一个“座位”列,指定购买的座位数。(“门票”实际上最好被认为是在活动中购买一个或多个座位的交易。)

以下是此类工作 SQLite 查询的两个示例,它们为我提供了所需的结果:

但是使用 Peewee,我不知道在指定外部查询时如何选择内部查询的聚合(计数或总和)。我当然可以为该聚合指定一个别名,但似乎我不能在外部查询中使用该别名。

我知道 Peewee 有一种执行“原始”SQL 查询的机制,并且我已经成功地使用了这种解决方法。但我想了解这些查询是否/如何直接使用 Peewee 完成。

0 投票
1 回答
11305 浏览

python - Python Flask:AttributeError:“NoneType”对象没有属性“is_active”

使用Flask Mega Tutorial我正在尝试学习 Flask。在本教程的第 5 部分中,我现在正在构建一个需要用户登录的个人资料页面。

因为我使用的是 peewee ORM 而不是 SQLAlchemy,所以我会在这里和那里调整代码,但对于这种情况,我认为这并不重要。我现在使用我的 Google (openID) 帐户登录并遇到错误提示AttributeError: 'NoneType' object has no attribute 'is_active'。错误发生在此函数末尾的行中login_user(user, remember = remember_me)

由于这段代码以前有效,我不知道为什么现在会出错。方法(不是属性)出现is_active在 User 类中,如下所示:

但我有点迷茫,为什么这会给我一个错误。所以我的问题真的是:有人知道我在这里做错了什么吗?

欢迎任何提示,因为我完全迷路了..

0 投票
2 回答
339 浏览

python - 计数使用 Peewee 连接的表

我正在尝试使用Peewee ORM编写查询。查询应返回至少有一条消息与之关联的用户的所有名称。我目前尝试如下:

我的模型看起来像这样:

然而,这给了我以下错误:OperationalError: misuse of aggregate function Count().

不过,我完全迷路了。有人知道我该如何解决这个问题吗?欢迎所有提示!

0 投票
1 回答
171 浏览

python - 如何在 Python Peewee 中手动插入 ForeignKeyFields?

我正在使用 Python Peewee ORM,我想知道如何通过简单地插入键而不是对象本身来插入外部字段。例如,我有一个名为 message 的模型,它的 message_type 是 ForeignKeyField。我知道 message_type 的键是 1,所以我试试这个:

有人知道我该怎么做吗?

0 投票
7 回答
9027 浏览

python - 如何使用 peewee 创建模型中定义的所有表

我使用 peewee 定义了很多模型类。ClassName.create_table()可以生成表,但只能生成一张表。如何使用单个语句创建所有表?

0 投票
1 回答
356 浏览

python - 烧瓶 peewee 不在网络服务器上工作

除了编写数据的脚本之外,我无法从 python 脚本访问 peewee 数据库(但在交互式 shell 中很奇怪)。我正在用 python、flask 和 peewee 开发一个数据挖掘应用程序。我将在这里将其分解为一个字节大小的问题,但它的范围比我所呈现的要大。所有 python 文件都位于同一个文件夹中

基本过程是一个python命令行操作,它会从纽约时报和instagram中获取一些信息并将它们存储到Peewee(sqllite)数据库中。然后我使用烧瓶应用程序来探索数据。

继承自 database.py 的模型之一:

新闻几乎看起来像这样:

如果做这样的事情:

然后我可以运行:

它会收集东西并将它们写入数据库

然后我有一个名为 webapp.py 的文件,它是一个烧瓶应用程序

“python webapp.py”

我试图将其分解为核心问题。烧瓶应用程序永远不会在数据库中看到任何东西......永远......

我知道它正确地记录了它们,因为我实际上可以在那个文件夹中运行“python”,导入数据库,我从 Stories.select() 中得到了很多故事

更奇怪的是,我最初以一种更理想的方式构建了它,其中烧瓶应用程序仅创建一个新实例的新实例,然后调用其上的函数以从数据库返回内容,这很有效。在开发模式下。但是,当我将它部署到我的网络派系服务器(并在那里运行所有东西)时,我再次收到来自数据库的空响应。这是我尝试直接引用烧瓶中的数据库的尝试,认为这可能是新闻几乎他妈的事情......但不。

我只是感到困惑,为什么 sqllite 数据库会在本地完全按预期执行,但一旦部署到网络服务器就不会,而且......为什么我提供的烧瓶代码没有从数据库中获取任何内容,而是运行相同的数据库查询交互式外壳工作?

有任何想法吗?

0 投票
1 回答
1296 浏览

python - 如何按名称设置 Python 对象的字段/成员

我正在做一个简单的对象编组事情,它在一个简单的 RESTful API 和一个 peewee 管理的数据存储之间进行。但是,这种模式不断出现(form作为 的输出cgi.FieldStorage()):

当然,这是笨拙且难以维护的。我更愿意做的是这样的事情:

显然这是我找不到的 SET_FIELD_VALUE 。我知道如何使用它,eval但显然我宁愿避免这种情况,而且我意识到实际模式实际上可能涉及某种形式的字段引用或反射 API 等,但我无法找到任何关于一个人会怎么做。

0 投票
2 回答
1650 浏览

mysql - CompositeKey作为与mysql的peewee中的外键

我使用 peewee 作为 mysql DB 的 ORM。我的方案中有 3 个表,一个用于设备,一个用于应用程序,一个用于每个测试仪应用程序和测试应用程序的每个设备的结果。APPS 表如下所示:

前 3 列是我的主键,因为我希望表中的每个修订版都可以根据某些版本代码轻松过滤应用程序(版本代码随着 git\svn 中的修订而递增,而版本名称表示版本本身为取自开发分支)。当我想将 APPS 表作为 TESTS 表的参考表时,我的问题就开始了,这意味着每个测试都引用了 APPS 两次,一次用于测试人员,一次用于测试的应用程序。我不确定在我的 TESTS 表中有一个 3 个字段的外键(它是 6 个!)是否是个好主意。

有什么好的解决方案吗?我尝试将具有自动增量的 _ID 字段添加为“KEY”,这样我就可以访问一个数字单个字段,但是 ORM 并不真正支持它,我有点咬牙切齿地试图解决这个问题。

我的 Db 是组织不好还是我需要简单地替换 ORM?我认为如果没有 ORM,我可能会很容易地完成它......

0 投票
1 回答
1166 浏览

peewee - Multiple joins in peewee

I'm stumped. I've got three Models defined in peewee thusly:

I'm trying to express this mySQL query using peewee:

Basically, just give me a list of patients and the ID of their metrics for a given provider. Pretty simple, but I can't get my head around how to make peewee do this. I've tried chaining the joins, but peewee can't resolve the foreign keys. I've tried using .join in several different ways, and the .from_ method, for instance:

In this case, mySQL complained that an alias for the derived table needed to be created. I think I'm barking up the wrong tree and there is a simple way to build this query in peewee, but I'm stumped. Can anyone show me the 'right' way?

0 投票
3 回答
11660 浏览

python - 超时重新连接 MySQL

我有一个 Python 程序,它在后台运行数周,并且每隔一段时间进行一次数据库查询。为此,我使用的是 ORM peewee(版本 2.2.1)。我MySQL用作后端。

最近我在访问数据库时遇到了一个反复出现的问题,通常是在运行程序几天之后。引发的错误peewee

追溯是深入的peewee。我把它贴在这里,但由于我的virtualenv文件名太长,我正在缩短它们:

我发现的可能的解决方案尝试:

  • 这个问题MySQL中,其中一条评论建议每隔一段时间对服务器进行一次 ping操作以保持它(连接?)处于活动状态。不过,我不确定如何通过 ORM 做到这一点。(我应该只是SELECT 1每小时一次吗?)
  • 在4 个月前打开的这个 github peewee issue中,提到了同样的错误,不过,据说那里已经解决了(我正在使用更新的版本)。
  • 在一个7 年的问题trac,一个建议是增加MySQL3 天的超时时间。
  • 在这个论坛讨论中,建议增加MySQL的超时选项,但提供了“使用 MySQL JDBC 连接器的 autoReconnect 选项”的替代方案。我试图弄清楚 Python 的MySQLdb模块是否存在这样的选项,但找不到。
  • 我找到了这个关于重新连接行为的MySQL 参考页面,但对于我的理解来说有点复杂MySQL(通常我只使用 ORM),而且我不知道如何从peewee.

即使我能够 ping 数据库以使连接保持更长时间的活动,我认为在不需要连接时保持连接活动被认为是一种不好的做法。有没有办法通过 ORM 重新打开连接?我认为将 ping 和增加超时都MySQL作为解决方法,而真正的解决方案是在需要时重新连接(真正的解决方案是我所要求的)。