Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将撇号从python传递到psql';数据库错误';对象没有属性';编码';_Python_Postgresql_Sql Injection - Fatal编程技术网

如何将撇号从python传递到psql';数据库错误';对象没有属性';编码';

如何将撇号从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

我正在使用本地主机postgresql数据库9.6。哪一个像这样连接

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
函数是什么)。但这就是你提到的单引号问题的原因。