Dan*_*iel 6 python mysql string
我该如何正确地做到这一点:
我想做这样的查询:
query = """SELECT * FROM sometable
order by %s %s
limit %s, %s;"""
conn = app_globals.pool.connection()
cur = conn.cursor()
cur.execute(query, (sortname, sortorder, limit1, limit2) )
results = cur.fetchall()
一切正常但%s%s的顺序并没有正确地输入字符串.它将两个替换放在它们周围的引号中.
所以最终结果如下:
ORDER BY 'somecol' 'DESC'
哪个错了应该是:
ORDER BY somecol DESC
任何帮助非常感谢!
查询字符串中的%s占位符是为参数保留的.'%s%s'中的%s不是参数.您应该分两步创建查询字符串:
query = """SELECT * FROM sometable order by %s %s limit %%s, %%s;"""
query = query % ('somecol', 'DESC')
conn = app_globals.pool.connection()
cur = conn.cursor()
cur.execute(query, (limit1, limit2) )
results = cur.fetchall()
Run Code Online (Sandbox Code Playgroud)
不要忘记过滤第一次替换以防止SQL注入的可能性
| 归档时间: |
|
| 查看次数: |
11951 次 |
| 最近记录: |