簡體   English   中英

將字符串與另一個包含變量的字符串連接

[英]Concatenate string with another that contains a variable

我在使用MySQLdb的Python中有一個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的參數。

使用string格式。

sql = "SELECT URL, Name AS Category\n\
   FROM sitelist sl\n\
   INNER JOIN sitecategory sc ON sc.PlacementCategory_id = sl.Category_id "
if limit > 0: # you don't need parenthesis in python
    sql += "LIMIT {}" .format(limit)

或使用format specifier

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM