如何使用Python用双引号封装字符串

时间:2018-01-11 00:24:15

标签: python

我正在处理D.B.使用python和表名称的查询应该包含在引号中以帮助可能的转义。有些时候用户提供带引号的表名称,有些时间没有引号。

想知道如何确保tableName始终是带引号的字符串?

my_string = "select * from " + tableName
print(my_string)

我想要放弃=> select * from" table-Value"

4 个答案:

答案 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)