python - 在 Python 中粘合字符串以组成 SQL 查询的最佳方法

标签 python string-concatenation

我来自 PHP 背景。在编写 SQL 查询时,我倾向于这样做:

$query = '
SELECT
    *
FROM `table` AS t
WHERE 
    t.`categoryID` = '.$categoryID.'
';

if(!empty($recordID))
{
$query .= '
    AND t.`recordID` = '.$recordID.'
';
}

$data = $db->fetchAll($query);

在 Python 中执行此操作的最佳/最有效方法是什么?

最佳答案

使用 Python 可以通过多种方式实现它。最简单的方法是使用 format string syntaxTemplate对象。

格式字符串语法的优点是您不需要使用其他对象。示例:

query = "SELECT * FROM `table` AS t WHERE t.`categoryID`={}".format(category_id)
if record_id:
    query += " AND t.`recordID`={}".format(record_id)

虽然大多数时候数据库 Python 包装器会让你让它更安全(防止 SQL 注入(inject)):

cursor.execute("UPDATE Writers SET Name = %s WHERE Id = %s", ("Leo Tolstoy", "1"))    

您可能对这些链接感兴趣:

以下是它如何适用于 Postgresql:

ps = db.prepare("SELECT * FROM information_schema.tables WHERE table_name = $1 LIMIT $2")
ps("tables", 1)

关于python - 在 Python 中粘合字符串以组成 SQL 查询的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9236836/

相关文章:

Python:用其他字符串包围字符串的一部分?

string - 如何在Scala中进行字符串连接

python - 在 SQLAlchemy 中延迟加载 column_property

java - 关于 "+"运算符及其 StringBuilder 实现

c++ - 除了 stringstream 之外,还有其他方法可以连接由多种类型的变量组成的字符串吗?

python - 当因式分解中出现的(短〜)素数列表已知时,有哪些有效的整数因式分解算法?

javascript - 在 React 组件中组合定义的 props 的最佳方法

python - Python 中的 OpenID Connect 提供程序

python - 如何解析 orderedDict?

python - 按包含 str 过滤 Pandas 数据帧行