python - 将字符串与另一个包含变量的字符串连接起来

标签 python mysql

我在 Python 中有一个使用 MySQLdb 的 MySQL 查询,我想根据是否提供 LIMIT 给我不同的行数。

所以,像这样:

sql = "SELECT URL, Name AS Category 
       FROM sitelist sl 
       INNER JOIN sitecategory sc ON sc.PlacementCategory_id = sl.Category_id "
if limit > 0 :
    sql += "LIMIT %s", (limit)

然而,这失败了:

TypeError: cannot concatenate 'str' and 'tuple' objects

我怎样才能连接包含 limit 数字的字符串,同时保持查询“安全”?如果上面是一个单独的字符串,以上工作正常。

在 PHP 中,我会简单地使用带有 bindparam() 的准备好的 PDO 语句,但我在 Python 中找不到类似的东西。

最佳答案

我认为最简洁的方法是:

sql = ("SELECT URL, Name AS Category "
       "FROM sitelist sl "
       "INNER JOIN sitecategory sc ON sc.PlacementCategory_id = sl.Category_id")

if limit > 0:
    whatever.execute(sql+" LIMIT %s", (limit,))
else:
    whatever.execute(sql)

请注意:sql 的每一行都应该有左引号和右引号;并且 limit 需要在元组中作为 execute 的参数。

关于python - 将字符串与另一个包含变量的字符串连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27292335/

相关文章:

Python:使用 ujson 转义问题

python - 使用 Python 脚本在 ClearDB 上搜索 MySQL 数据库

mysql - SQL:DATE_FORMAT() 和顺序

mysql - 如何加速我的 "friends list"MySQL 查询?

php - 提取 MySQL Blob 并添加到 PHP 数组?

python - freebsd 上的 Linux 库 (ibm_db libdb2.so.1)

python - 清除 QWebEngineView 中的 cookie

python - 遍历一组字典 - python - 基本搜索

mysql - 在 MySQL 主从表对中插入记录的最佳方式

mysql - 在 Perl 中使用 CSV_XS 和 DBI 编写 SQL 查询结果的问题