2015-09-24 70 views
1

我有一個問題,在python中爲postgresql傳遞字符串。特別是我有以下腳本完美的作品:Python:如何使用psycopg2將字符串傳遞到Postgress命令

y = 'test' 
for i in un: 
    crs = conn.cursor() 
    query = """ 
     select * 
     FROM test 
     WHERE test.vin_id = %s 
    ;""" 
    s_id = i 
    crs.execute(query,[s_id]) 
    s_out = crs.fetchall() 

,但如果我改變test與可變y它給了我一個錯誤。

for i in un: 
    crs = conn.cursor() 
    query = """ 
     select * 
     FROM %s 
     WHERE %s.vin_id = %s 
    ;""" 
    s_id = i 
    crs.execute(query,[y,y,s_id]) 
    s_out = crs.fetchall() 

ProgrammingError: syntax error at or near "'test'" 
LINE 3:   FROM 'test' 

回答

0

您可以使用AsIs

from psycopg2.extensions import AsIs 
for i in un: 
    crs = conn.cursor() 
    query = """ 
     select * 
     FROM %s 
     WHERE %s.vin_id = %s 
    ;""" 
    s_id = i 
    crs.execute(query,[AsIs(y),AsIs(y),s_id]) 
    s_out = crs.fetchall() 
+1

你忘了使用'AsIs':'crs.execute(查詢,[AsIs(y),AsIs(y),s_id])' –

+0

@ClodoaldoNeto謝謝。我修復我的答案。 –

0

遺憾的是它不工作,我有同樣的問題,當我試圖把句子中間,比如:

query1 = """ 
SELECT * 
FROM test1 
WHERE %s LIKE '%' || vin_id || '%' 
;"""  
crs1 = conn.cursor() 
crs1.execute(query1, [s_id]) 
相關問題