我正在处理D.B.使用python和表名称的查询应该包含在引号中以帮助可能的转义。有些时候用户提供带引号的表名称,有些时间没有引号。
想知道如何确保tableName始终是带引号的字符串?
my_string = "select * from " + tableName
print(my_string)
我想要放弃=> select * from" table-Value"
答案 0 :(得分:2)
有两个选项,您可以将整个内容放在单引号中,也可以转义双引号。
选项1
my_string = 'select * from "' + tableName + '"'
选项2
my_string = "select * from \"" + tableName + "\""
另外,对于SQL查询,您应该使用预准备语句来避免SQL注入。
答案 1 :(得分:2)
尝试使用单引号创建字符串并添加双引号,如下所示:
mystring = 'select * from "' + tableName + '"'
或者你可以在你的String中转义双引号:
mystring = "select * from \"" + tableName + "\""
您可以在String Literals Here
中找到更多信息答案 2 :(得分:2)
您可以使用String Formatting。
>>> tablename = 'user'
>>> query = "select * from '{}'".format(tablename)
>>> query
>>> "select * from 'user'"
答案 3 :(得分:2)
对于您的问题,您应该手动检查myTable
是否被
len(myTable) > 1 and '"' == myTable[0] and '"' == myTable[-1]
然后,您可以应用其他建议的方法。
另外,我建议使用带有文档字符串的格式,因为你可以拥有包含许多行的命令。
"""CREATE TABLE {};""".format(your_var)
当命令很长时,你可以看到它变得有用。
"""CREATE TABLE {} (
pubkey varchar,
title varchar,
journal varchar,
year varchar,
PRIMARY KEY(pubkey));""".format(your_var)