使用Python中的变量更新PostgreSQL用户凭证

问题描述 投票:0回答:2

我正在尝试使用Python为PostgreSQL数据库用户更新用户凭证。我尝试引用以下线程,但不幸的是,这似乎无法解决我的问题:

How to change password of a newly created user using variable in postgresql 9.5 SP

这是我的代码:

con = p.connect(database="mydB", user="abc", password="testing", host="127.0.0.1", port="5432")
cur = con.cursor()

uid = "adi"
pwd = "test6"

statement = statement = '''CREATE or REPLACE FUNCTION add_user ({}, {}) RETURNS void AS $$ EXECUTE ALTER USER ' || $1 || ' WITH PASSWORD || $2||'''.format(uid,pwd)

cur.execute( statement)
cur.execute('''COMMIT''')

我收到以下错误:ProgrammingError:“'adi'”或附近的语法错误

请帮助或推荐我使用更好的解决方案。预先谢谢大家!

error image

python-3.x postgresql sql-update mysql-error-1064
2个回答
1
投票

我能够成功解决此问题。

import psycopg2 as p
con = p.connect(database="mydB", user="adi", password="xxxx", host="127.0.0.1", port="5432")
cur = con.cursor()

uid = "adi"
pwd = "test"

statement = '''ALTER USER {} WITH PASSWORD %s '''.format(uid)

cur.execute(statement, [pwd])
cur.execute('''COMMIT''')

0
投票

尝试在实际语句中提供用户名和密码,然后尝试执行。

首先尝试删除ALTER USER之前的多余引号,然后执行。如果不起作用,请尝试以下方法:

statement = '''CREATE or REPLACE FUNCTION add_user ({}, {}) RETURNS void AS $$ EXECUTE 'ALTER USER ' || $1 || ' WITH PASSWORD || $2||'''.format(uid,pwd)

cur.execute(statement)
© www.soinside.com 2019 - 2024. All rights reserved.