簡體   English   中英

使用 Python 中的變量更新 PostgreSQL 用戶憑證

[英]Update PostgreSQL user credentials using variables in Python

我正在嘗試使用 Python 更新 PostgreSQL db 用戶的用戶憑據。我嘗試參考以下線程,但不幸的是,這似乎無法解決我的問題:

如何在 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'" 處或附近的語法錯誤

請幫助或將我推薦給具有更好解決方案的線程。 提前謝謝大家!

錯誤圖片

我能夠成功解決這個問題。

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''')

嘗試在實際語句中提供用戶名和密碼並嘗試執行。

首先嘗試刪除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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM