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

python - 默认情况下 DB API 2.0 自动提交的基本原理是什么?

PEP 249 - Python 数据库 API 规范 v2.0.commit()状态的描述中:

请注意,如果数据库支持自动提交功能,则最初必须关闭。可以提供一个接口方法来重新打开它。

鉴于大多数数据库默认为自动提交,这背后的基本原理是什么?

0 投票
1 回答
152 浏览

python - 在 Python sqlite3 db-api 中使用 CREATE TABLE ... (column DEFAULT ?) 子句中的参数

我想使用 python 执行 CREATE STATEMENT 子句,使用参数替换为某些列指定默认值?(这样我就可以安全地从 python 类型中指定默认值)。

它似乎不起作用,尽管当我在 select 或类似语句中使用参数语句时它工作正常。例如:

正如预期的那样:

意外:

这是为什么?我正在尝试的可能吗?

0 投票
1 回答
11565 浏览

python - 使用 psycopg2 插入多行

根据psycopg2: insert multiple rows with a query,使用 psycopg2 的execute而不是executemany效率更高。其他人可以确认吗?

上面的 StackOverflow 问题建议使用mogrify来创建这样的语句:

是否可以使用常规执行函数生成这样的语句?我想到了一些形式

会工作。

更新:

例如,我尝试传入执行 sql 语句:

使用以下元组:

但我得到的只是错误:

没有要获取的结果

0 投票
1 回答
7173 浏览

python - 使用 %s 的 Python MySQL 连接器数据库查询失败

我有一个应该查询包含用户信息的数据库的基本程序。我正在尝试为特定用户选择信息并将其打印到控制台。

这是我的代码:

我将用户名存储在一个变量中,因为稍后我计划从 tkinter 输入框中获取用户名。当我执行此代码时,我收到以下错误:

我尝试在查询中将 %s 放在引号中,但随后它会逐字搜索用户名 '%s' 并且什么也不返回。如何更改我的代码,以便仅查询该用户的数据库?

谢谢你。

仅供参考:我使用的是 python 3.3。

0 投票
1 回答
154 浏览

python - 如何使用 Python 的 DBAPI 可移植地验证数据库模式?

我正在编写一个实用程序,我打算将它用于至少三个不同的数据库服务器后端(SQLite3、PostgreSQL 和 MySQL)。我没有使用 ORM(尽管我在完成原型后尝试使用 SQLAlchemy 进行 fork,并且对如何维护架构以供其他工具可能访问(将来可能来自其他语言)足够熟悉)。

我本着 StackOverflow 关于回答自己的问题并打开问题并回答讨论的政策的精神发布此内容。

下面答案中发布的代码已经针对所有三个支持的目标进行了测试,这些目标预先配置了我预期架构的一个非常简单的子集(脚本顶部附近的硬代码)。它目前仅检查每个表是否具有所有必需的列,并且仅在存在额外列时发出警告。我不检查列内容的类型或其他约束。

(我的实用程序应该允许最终用户添加其他列,只要它们允许 NULL 值或代码提供合适的默认值 --- 因为我的代码只会插入或更新我指定的列的子集)。

请让我知道是否有更好的方法来实现这一点,或者我是否犯了一些在我的测试中没有发现的严重错误。

(我想知道如何正确创建可以共享的SQLFiddle条目/链接,以使这个问题更容易处理。欢迎任何关于此的指针,我已经尝试在这里为我的 MySQL 模式创建这个.. .让我们看看这是否有效)。

0 投票
0 回答
117 浏览

python - 错误:列表索引超出范围。使用 cur.fetchall() 从 SQL 查询获得的 Python 变量没有被读入另一个 SQL 查询

我从一个名为 max_dateCS 的 SQL 查询中获得了一个值。该变量需要输入到另一个 SQL 查询中。我遇到了一个问题,因为它给出了一个错误“列表索引超出范围”。

0 投票
1 回答
303 浏览

python - WSGI如何在浏览器上打印原始MYSQL输出

mysql输出:

WSGI 脚本的底部:

阿帕奇错误:

如果可能,我想使用“yield”而不是“return”。

因为通常我使用“yield”所以如果我想在网络上以原始方式查看 mysql 输出..

我应该怎么办 ?

0 投票
1 回答
1319 浏览

python - 如何防止 PyMySQL 转义标识符名称?

我在 Python 2.7中使用 PyMySQL并尝试执行以下语句:

使用以下参数:

总是导致:

{ProgrammingError}(1064, u"您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在 ''artikel' ('REC_ID', 'odoo_created') 附近使用的正确语法\n
VALUES ('48094', '2014-12-' 在第 1 行")

在我看来,PyMySQL 在格式化期间转义了所有字符串。对于表名和列名等数据库标识符,如何防止这种情况发生?它破坏了语句,因为与表 ( ) 相比,SELECT字符串文字 ( SELECT * FROM "table") 中的 s 是不可能的SELECT * FROM table

0 投票
2 回答
929 浏览

python - 在 Python 的 SQL DBI 中参数化带引号的字符串

我正在使用pg8000通过 Python 连接到 PostgreSQL 数据库。我希望能够通过以下cursor.execute方法将日期作为参数发送:

这将引发错误:InterfaceError: '%s' not supported in a quoted string within the query string。可以使用 Python 的字符串格式在其中插入日期。使用字符串格式化迷你语言提供了一种数据验证措施来防止 SQL 注入攻击,但它仍然很丑陋。

如何将带引号的字符串发送到cursor.execute方法中?

0 投票
1 回答
161 浏览

python - Python PYDBLITE - 将记录添加到 pydblite 时出错

我有一个使用pydblite数据库库的 Python 脚本。当我在创建数据库并添加记录后运行代码时。如果我再次运行代码会生成错误..帮助

代码

第二次运行出错;