如何将撇号从python传递到psql';数据库错误';对象没有属性';编码';
我正在使用本地主机postgresql数据库9.6。哪一个像这样连接如何将撇号从python传递到psql';数据库错误';对象没有属性';编码';,python,postgresql,sql-injection,Python,Postgresql,Sql Injection,我正在使用本地主机postgresql数据库9.6。哪一个像这样连接 conn_string = """host='localhost' dbname='contact_form' user='{0}' password='{1}'""".format(db_username, d
conn_string = """host='localhost'
dbname='contact_form'
user='{0}'
password='{1}'""".format(db_username,
db_password)
conLocal = psycopg2.connect(conn_string)
我有name=“Mark's Dane”,其中包含撇号
我想传递到数据库中,所以我有以下查询
query = """SELECT pet_name
FROM pet
WHERE name = '{0}'""".format(name)
然后运行以下代码:
pet_name = read_sql(query, conLocal)
但是,我得到了以下错误:
“DatabaseError”对象没有属性“encode”不要使用
格式将值插入SQL字符串
相反,使用execute
方法,传递一组参数,例如
conn.execute("""SELECT pet_name
FROM pet
WHERE name = %s""", (name,))
注意1元组(名称,)
的使用
有关更多信息,请参阅Python DBI-API文档和psycopg2手册。是命令行客户端。你的意思是我使用了上面的代码,但得到了以下错误:“ProgrammingError”对象没有属性encode@KppatelPatel ... 还有完整的堆栈跟踪?我看不出这个错误是怎么来的。ProgrammingError:unterminated引号字符串在“'s”@KPPatelTable处或附近,这是另一个错误,也不是完整的堆栈跟踪。这不是“为您调试代码”服务,有些代码您没有显示(比如read\u sql
函数是什么)。但这就是你提到的单引号问题的原因。