正确的Postgresql语法

2024-10-03 21:30:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个postgres新手,在使用Python查询postgresql中的文本字段时遇到了一些问题。允许我从“postgres”数据库的“jivemessage”表中搜索“body”列内容的正确语法是什么?你知道吗

try:
    conn = psycopg2.connect("dbname='postgres' user='postgres' host='localhost'  password='<password>'")

except:
    print "cannot connect"

i = 'test'
cur = conn.cursor()

cur.execute('SELECT * from jivemessage WHERE body LIKE "%'+i+'%"')

不断出现以下错误:

ProgrammingError: column "%test%" does not exist

谢谢你的帮助。你知道吗


Tags: 文本数据库内容postgresqlconnect语法bodypostgres
1条回答
网友
1楼 · 发布于 2024-10-03 21:30:07

您没有正确引用查询。这里不要使用字符串连接,而是使用SQL parameters

cur.execute('SELECT * from jivemessage WHERE body LIKE %s', ("%{}%".format(i),))

这里,%s占位符向数据库驱动程序发出信号,表示在查询时应该将第二个参数的第一个值放在那里。你知道吗

这将插值留给数据库驱动程序,使数据库有机会对查询进行一次优化,即使您要重用相同的查询。你知道吗

它还可以比您自己更好地防止SQL注入攻击,最重要的是,可以保证遵循正确的引用规则。你知道吗

相关问题 更多 >