问题标签 [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 投票
2 回答
19543 浏览

python - SQLAlchemy 在提交前使用自动增量获取主键

当我创建了一个具有自动递增主键的表时,有没有办法在不实际提交的情况下获取主键(即保留主键之类的操作)?

我想在事务中放置两个操作,但是其中一个操作将取决于在前一个操作中分配的主键。

0 投票
2 回答
4504 浏览

python - 集成 CherryPy Web 框架、SQLAlchemy 会话和 lighttpd 以提供高负载 Web 服务的最佳实践

我正在使用以下设置在 lighttpd 后面开发一个 CherryPy FastCGI 服务器,以启用在 CherryPy 控制器中使用 ORM SQLAlchemy 会话。但是,当我对大约 500 个循环的 14 个并发请求运行压力测试时,它开始出现类似AttributeError: '_ThreadData' object has no attribute 'scoped_session_class'inopen_dbsession()AttributeError: 'Request' object has no attribute 'scoped_session_class'inclose_dbsession()一段时间后的错误。错误率总共约为 50%。

仅当我在 lighttpd 后面运行服务器时才会发生这种情况,而不是直接通过cherrypy.engine.start(). 已确认connect()不会引发异常。

scoped_session我还尝试分配to的返回值GlobalSession(就像它在此处所做的那样),但随后它给出了诸如UnboundExceptionError和其他 SA 级错误之类的错误。(并发:10,循环:1000,错误率:16%。即使直接运行也会发生。)

有一些可能的原因,但我缺乏足够的知识来选择一个。
1. start_threadFastCGI环境下订阅不可靠吗?似乎open_dbsession()是在 2 之前调用的connect()
。是否cherrypy.thread_data由于某种原因被清除?

服务器代码

lighttpd fastcgi 配置

编辑

  • 从原始源代码中恢复了代码示例中缺少的thread_index参数(感谢注释)
  • 澄清错误不会立即发生
  • 将条件缩小到 lighttpd
0 投票
11 回答
102212 浏览

python - 在 SQLAlchemy 中选择 *?

可以SELECT *在 SQLAlchemy 中做吗?

具体来说,SELECT * WHERE foo=1?

0 投票
4 回答
2602 浏览

python - 我可以从 SQLAlchemy 中获取纯数组而不是字典的行吗?

我正在尝试优化一些 Python 代码。探查器告诉我 SQLAlchemy 的 _get_col() 是杀死性能的原因。代码看起来像这样:

我正要检查代码,让它更像这样......

...但我发现一些文档似乎表明在访问像数组这样的行对象时,您实际上仍在提取字典键。换句话说,行对象如下所示:

如果是这样的话,我怀疑我会看到按数字而不是名称访问列的性能改进。有没有办法让 SA 以元组列表或列表列表而不是字典列表的形式返回结果?或者,任何人都可以建议任何其他优化吗?

0 投票
1 回答
2181 浏览

mysql - Django 连接池和时间字段

有没有人使用 Django、SQLAlchemy 和 MySQL 进行连接池?

我使用了本教程(http://node.to/wordpress/2008/09/30/another-database-connection-pool-solution-for-django-mysql/),效果很好,但我遇到的问题是我带回了一个时间字段,它正在转换为 timedelta,因为没有使用 Django 特定的转换。

来自 django/db/backends/mysql/base.py 的转换代码

})

文章中的连接代码:

0 投票
1 回答
471 浏览

python - 动态创建对象的 Doctest

测试这样的代码的最佳方法是什么(下面的方法显然失败,而对象每次都在不同的块中创建):

0 投票
3 回答
19219 浏览

python - 如何获取 sqlalchemy 中受影响的行数?

我有一个关于 Python 和 sqlalchemy 模块的问题。cursor.rowcountsqlalchemy Python 中的等价物是什么?

0 投票
4 回答
20129 浏览

python - SQLAlchemy - 插入或替换等效项

有人知道 SQLAlchemy 及其 SQL 表达式语言中的 SQL“INSERT OR REPLACE”子句的等价物吗?

非常感谢 - honzas

0 投票
4 回答
3200 浏览

python - SQLAlchemy 多对多孤儿删除

我正在尝试使用 SQLAlchemy 来实现一个基本的用户组模型,其中用户可以有多个组,组可以有多个用户。

当一个组变为空时,我希望删除该组(以及与该组相关的其他内容。幸运的是,SQLAlchemy 的级联可以很好地处理这些更简单的情况)。

问题是 cascade='all, delete-orphan' 不完全符合我的要求;当组为空时,它不会删除组,而是在任何成员离开组时删除组。

向数据库添加触发器可以很好地在组变为空时删除组,但触发器似乎绕过了 SQLAlchemy 的级联处理,因此与组关联的内容不会被删除。

当所有成员都离开并将此删除级联到相关实体时,删除组的最佳方法是什么。

我知道我可以通过在我的代码中找到用户可以离开组的每个位置然后执行与触发器相同的操作来手动执行此操作但是,我担心我会错过代码中的位置(而且我懒惰的)。

0 投票
2 回答
4746 浏览

python - 使用带有 mysql unix 时间戳的 sqlalchemy 定义表

背景,有几种方法可以在 MySQ 中存储日期。

  1. 作为字符串,例如“09/09/2009”。
  2. 作为使用函数 UNIX_TIMESTAMP() 的整数,这应该是传统的 unix 时间表示(您知道自纪元以来的秒数加/减闰秒)。
  3. 作为 MySQL TIMESTAMP,mysql 特定的数据类型与 unix 时间戳不同。
  4. 作为 MySQL 日期字段,另一种 mysql 特定数据类型。

    不要将案例 2 与案例 3(或案例 4)混淆,这一点非常重要。我有一个带有整数日期字段的现有表(案例 2)我如何在 sqlalchemy 中以我不必访问 mysql 的“FROM_UNIXTIME”函数的方式定义它?

    作为记录,仅使用 sqlalchemy.types.DateTime 并希望它在检测到整数列不起作用时做正确的事情,它适用于时间戳字段和日期字段。