LISTEN channel_name;由于'与'而失败

时间:2018-01-03 10:22:03

标签: python python-3.x postgresql psycopg2

我正在努力使LISTEN channelname可配置。

queue_listen_name = config["database"]["listen_channel"]
cur.execute("LISTEN %s;", (queue_listen_name,))

然而,这段代码失败了,因为postgresql在收听频道时不喜欢单引号:

psycopg2.ProgrammingError: syntax error at or near "'channel_name'"
LINE 1: LISTEN 'channel_name';

使用双引号(在psql上测试)时它确实有效。

我该怎么办?我不想自己构建一个字符串,然后在该字符串上使用cur.execute(),因为有明显的SQL注入原因。

所以这不是我想做的事情:

queue_listen_name = "LISTEN {};".format(config["database"]["listen_channel"])
cur.execute(queue_listen_name)

1 个答案:

答案 0 :(得分:1)

从手册中获取,这些都应该有效并被描述为"安全":

.second-child
{
  max-height: 80%;
    overflow: auto;
}

或更好

.parent
{
	height: 200px;
	width: 100px;
	background-color: #F00;
	padding: 10px;
}

.second-child
{
  max-height: 80%;
	overflow: auto;
}

您可以在此处详细了解格式:http://initd.org/psycopg/docs/sql.html