在 Python 2.7 中为字符串添加单引号

Add a single quote to a string in Python 2.7

我想使用 SQL 输出字符串在 PostgreSQL 中使用 Python 查询一些数据。我正在使用 Python 2.7.

例如:

The output string is mike
I want to have mike as 'mike' to be valid as an input.

这是我的代码:

formated_fix_names = ''.join(author_name_fix_list)).replace(' ', '\'')

问题是我需要将此字符串作为 name = 'mike':

传递给 SQL 代码
cursor.execute("select author_name from commits where commit_hash in ("+formated_fix_names+")")

我认为问题一定出在这一部分.replace(' ', '\'')

可以使用双引号(""),例如:

name = "mike"
result = "'" + name + "'"

如果你想把字符串 mike 变成字符串 'mike' 你可以使用这个表达式:

name = "mike"
newName = "'%s'" % name

这会将包含字符串 mike 的 name 转换为 newName,其中包含带有单引号的字符串 mike,您现在应该可以使用它了。希望对您有所帮助!

不要搞乱字符串操作。 Psycopg does the right thing by adapting a Python list to a Postgresql array:

author_list = ['John','Mary']
query = """
    select author_name
    from commits
    where commit_hash = any (%s)
"""
print cursor.mogrify(query, (author_list,))
#cursor.execute(query, (author_list,))

输出:

select author_name
from commits
where commit_hash = any (ARRAY['John', 'Mary'])

注意 list 必须传递给包装在可迭代对象中的 cursor.execute 方法。

如果将 list 强制转换为 tuple:

,则可以使用 in 语法
author_list = ['John','Mary']
query = """
    select author_name
    from commits
    where commit_hash in %s
"""
print cursor.mogrify(query, (tuple(author_list),))
#cursor.execute(query, (tuple(author_list),))

输出:

select author_name
from commits
where commit_hash in ('John', 'Mary')