簡體   English   中英

如何在psycopg2 select查詢中使用字符串變量?

[英]How to use a string variable in psycopg2 select query?

從PostgreSQL列“ u62194”獲取數據時出錯

sql = """select userid from myusers WHERE userid='u62194' """ Of
course the hardcoded value works as it should.

import psycopg2

def select_tables():
    someuserid = 'u62194'
    print(someuserid)
    """ Run a select using a variable that is a string """
    sql = """select userid from myusers WHERE userid=%s """ %someuserid
    conn = None
    try:
        conn = psycopg2.connect(user = "postgres",
              password = "xxxxxx",
              host = "127.0.0.1",
              port = "5432",
              database = "mydb")
        cur = conn.cursor()
        cur.execute(sql, (select_tables,))
        print(cur.fetchone())
        cur.close()

    """ "myusers" table: id     userid 1      u51884 2      u62194 3      u26922  """

我應該得到:u62194

我認為您使用的查詢參數不正確。 將列表實例作為參數傳遞給execute函數,以傳遞查詢參數。 psycopg2手冊從內存中顯式地阻止您以嘗試的方式執行此操作。 嘗試更接近於此的方法:

import psycopg2

someuserid = "u62194"

conn = psycopg2.connect(
    user = "postgres",
    password = "xxxxxx",
    host = "127.0.0.1",
    port = "5432",
    database = "mydb"
)

cur = conn.cursor()

# Use a list here to insert query parameters into the query string.
cur.execute(
    """
    SELECT userid 
    FROM myusers u
    WHERE u.userid = %s;
    """,
    [someuserid,]
)

result = cur.fetchone()

print(result)

cur.close()

暫無
暫無

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

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