问题标签 [python-db-api]

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 投票
4 回答
17518 浏览

python - 在 Python 中设置数据库连接超时

我正在创建一个需要访问数据库的 RESTful API。我正在使用 Restish、Oracle 和 SQLAlchemy。但是,我将尝试尽可能笼统地提出我的问题,而不考虑 Restish 或其他 Web API。

我希望能够为执行查询的连接设置超时。这是为了确保放弃长时间运行的查询,并丢弃(或回收)连接。这个查询超时可以是一个全局值,这意味着,我不需要在每次查询或连接创建时更改它。

给定以下代码:

如何修改上面的代码来设置查询超时?此超时是否也适用于连接创建?

这类似于 java.sql.Statement 的 setQueryTimeout(int seconds) 方法在 Java 中所做的。

谢谢

0 投票
2 回答
5016 浏览

python - 为什么 Python 的 DB-API 中的连接没有“开始”操作?

在 mysql-python 中使用游标我曾经调用“BEGIN;”、“COMMIT;”和“ROLLBACK;” 明确如下:

然后,我发现底层的连接对象有相应的方法:

检查DB-API PEP我发现它没有提到连接对象的 begin() 方法,即使是扩展也是如此。

顺便说一句,当您使用该方法时,Mysql-python 会抛出 DeprecationWarning。例如 sqlite3.connection 根本没有该方法。

问题是为什么 PEP 中没有这种方法?该语句是否以某种方式可选,是否足以代替调用 commit() ?

0 投票
1 回答
1067 浏览

performance - 新项目 Python 3x PostgreSQL 9x 和 pg8000 1x DBAPI?

我正在开始一些新项目,想知道 pg8000 是否被认为是生产项目的好选择?

显然 Python 和 PostgreSQL 是成熟的产品,但我对 pg8000 的成熟度和性能都感到担忧。我的数据库访问会受到影响还是可以接受?

所以,请在回答我的问题时采取一些自由度。pg8000 准备好了吗?在编写以 db 为中心的程序时,使用 Python DBAPI 2.0 规范进行完全访问是否会遇到问题?

我知道一直有人问这样的问题,但我确实看过,但找不到任何与 pg8000 相关的最新信息。显然,考虑到相关技术已发布的版本,几个月后的任何答案都不会是最新的。

0 投票
2 回答
3272 浏览

python - 使用 Python 快速将许多列插入 Sqlite\Mysql

如果 Newdata 是 x 列的列表,如何获得唯一列的数量——第一个元组的成员数。(Len 不重要。)更改“?”的数量。使用下面的语句匹配列并插入。

0 投票
4 回答
4658 浏览

python - Python DB-API:如何处理不同的参数样式?

我正在实现一个 Python 本体类,它使用数据库后端来存储和查询本体。数据库架构是固定的(预先指定),但我不知道使用的是什么类型的数据库引擎。但是,我可以依靠数据库引擎的 Python 接口使用 Python DB-API 2.0 ( PEP 249 ) 的事实。一个简单的想法是让用户将一个符合 PEP 249 的Connection对象传递给我的本体的构造函数,然后它将使用各种硬编码的 SQL 查询来查询数据库:

我的问题是允许不同的数据库后端在查询中支持不同的参数标记,由paramstyle后端模块的属性定义。例如 if paramstyle = 'qmark',界面支持问号样式(SELECT * FROM term WHERE id = ?);paramstyle = 'numeric'表示数字的位置样式 ( SELECT * FROM term WHERE id = :1);paramstyle = 'format'表示 ANSI C 格式字符串样式 ( SELECT * FROM term WHERE id = %s)。如果我想让我的班级能够处理不同的数据库后端,似乎我必须为所有参数标记样式做好准备。对我来说,这似乎违背了通用 DB API 的全部目的,因为我不能对不同的数据库后端使用相同的参数化查询。

有没有办法解决它,如果有,最好的方法是什么?DB API 没有指定通用转义函数的存在,我可以使用它来清理查询中的值,因此手动转义不是一种选择。我不想通过使用更高级别的抽象(例如 SQLAlchemy)向项目添加额外的依赖项。

0 投票
9 回答
82803 浏览

python - 使用 Python 将 JSON 插入 MySQL

我在 Python 中有一个 JSON 对象。我正在使用 Python DB-API 和 SimpleJson。我正在尝试将 json 插入 MySQL 表中。

目前出现错误,我相信这是由于 JSON 对象中的单引号 '' 造成的。

如何使用 Python 将我的 JSON 对象插入 MySQL?

这是我收到的错误消息:

另一个错误供参考

这是我正在使用的代码的链接http://pastebin.com/q5QSfYLa

0 投票
1 回答
856 浏览

python - MySQL python DBAPI。如何获取字典而不是元组?

在执行的游标上调用 fetchall 时,Python DB API 返回一个元组列表。如果您使用 _mysql 模块,则 fetch_row 有一个how允许获取字典而不是元组的参数。我怎样才能用光标达到同样的效果?

0 投票
3 回答
65079 浏览

python - Python db-api:fetchone vs fetchmany vs fetchall

我今天刚刚和一些同事讨论了 python 的 db-api fetchone vs fetchmany vs fetchall。

我确定每个用例都取决于我正在使用的 db-api 的实现,但总的来说,fetchone、fetchmany 和 fetchall 的用例是什么?

换句话说,以下是等价的吗?还是其中有一个比其他的更受欢迎?如果是这样,在哪些情况下?

0 投票
1 回答
881 浏览

python - 在 python 中从 dbapi 中查找数据库类型(SQlite、Mysql、PostgreSQL)

我需要根据来自 dbapi 游标实例的数据找出我正在使用的数据库类型。在 dbapi 文档中没有找到有关如何执行此操作的任何线索。可以做到吗?

0 投票
2 回答
7796 浏览

python - 如何使用 MySQLdb 从 Python 更改 SQL 隔离级别?

我在研究这方面遇到的文档表明,对其他数据库执行此操作的方法是在查询中使用多个语句,例如:

不幸的是,这样做不会产生任何结果,因为显然 Python DB API(或者可能只是它的这个实现?)不支持单个查询中的多个记录集。

过去有没有其他人在这方面取得过成功?