这个字符串:
"CREATE USER %s PASSWORD %s", (user, pw)
总是扩展到:
CREATE USER E'someuser' PASSWORD E'somepassword'
谁能告诉我为什么?
编辑:
上面的扩展字符串是我的数据库在错误消息中返回给我的字符串。我正在使用 psycopg2 访问我的 postgres 数据库。真正的代码如下所示:
conn=psycopg2.connect(user=adminuser, password=adminpass, host=host)
cur = conn.cursor()
#user and pw are simple standard python strings the function gets as parameter
cur.execute("CREATE USER %s PASSWORD %s", (user, pw))
conn.commit()
通过 psycopg 使用将标识符传递给 postgresqlAsIs
来自extensions
module
from psycopg2.extensions import AsIs
import psycopg2
connection = psycopg2.connect(database='db', user='user')
cur = connection.cursor()
cur.mogrify(
'CREATE USER %s PASSWORD %s', (AsIs('someuser'), AsIs('somepassword'))
)
'CREATE USER someuser PASSWORD somepassword'
这也适用于将条件传递给子句,例如order by
:
cur.mogrify(
'select * from t order by %s', (AsIs('some_column, another column desc'),)
)
'select * from t order by some_column, another column desc'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)