我有一个在psql中运行良好的查询,但在我的程序中生成错误:
sql = 'SELECT id, x, y FROM table_name WHERE y NOT LIKE 'pa%' AND x IS NOT NULL;'
cur.execute(sql)
关于它为什么不起作用的任何指示?或任何建议,我如何解决它?
答案 0 :(得分:5)
它不是PostgreSQL
vs MySQL
查询语法 - 这在Python中只是语法错误:
>>> sql = 'SELECT id, x, y FROM table_name WHERE y NOT LIKE 'pa%' AND x IS NOT NULL;'
File "<stdin>", line 1
sql = 'SELECT id, x, y FROM table_name WHERE y NOT LIKE 'pa%' AND x IS NOT NULL;'
^
SyntaxError: invalid syntax
将查询放入双引号中:
sql = "SELECT id, x, y FROM table_name WHERE y NOT LIKE 'pa%' AND x IS NOT NULL;"
答案 1 :(得分:0)
Python中代码字符串的良好实践是三引号字符串,它使得它更清晰,可以包含单引号和双引号:
sql = '''
SELECT id, x, y
FROM table_name
WHERE y NOT LIKE 'pa%' AND x IS NOT NULL;
'''
来自manual:
三引号字符串可能跨越多行 - 所有相关的空格都将包含在字符串文字中。