我来自 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 syntax或 Template对象。
格式字符串语法的优点是您不需要使用其他对象。示例:
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/