2016-07-11 3 views
0

원시 코드를 사용하여 생성하도록 사용자에게 요청할 Python 변수로 SQL 코드를 대체하려고합니다.python 변수를 SQL 문에 전달합니다. psycopg2 pandas

아래 코드는 mypythonvariable을 수동으로 설정하면 (즉, 344을 sql 코드로 입력하면 작동하는 코드입니다.) SQL을 mypythonvariable으로 설정하면 작동하지 않습니다.

그러면 전체 sql 쿼리가 pandas 데이터 프레임으로 변환되어 더 이상 문제를 일으킬 수 있습니다.

감사하는 방법에 대한 도움이 필요합니다.

업데이트 : 난 그냥 문에 %s 코드를 추가하고 난 이제 오류 메시지 '를 받고 있어요': 문자열 중에 변환 모든 인수가 를 포맷하지 '보고 그 모든

conn = pg.connect(host = "localhost", 
         port = 1234, 
         dbname = "somename", 
         user = "user", 
         password = "pswd") 
mypythonvariable = raw_input("What is your variable number? ") 

sql = """ 
SELECT 
    somestuff 
FROM 
    sometable 
WHERE 
    something = %s 
""" 
df = pd.read_sql_query(sql, con=conn,params=mypythonvariable) 
+0

params 객체를 파라미터는 팬더'read_sql_query'에 의해 처리됩니다하지만 당신은 단지 전체로 문자열로 매개 변수를 추가하고 전달할 수있는 방법을 확실하지 : 'SQL = "" "SELECT ... WHERE 뭔가 = % s "" "% (mypythonvariable)' –

답변

0

감사합니다.

해결책을 찾았습니다. 매개 변수를 목록으로 전달해야하는 것처럼 보입니다.

conn = pg.connect(host = "localhost", 
        port = 1234, 
        dbname = "somename", 
        user = "user", 
        password = "pswd") 
mypythonvariable = raw_input("What is your variable number? ") 

sql = """ 
SELECT 
    somestuff 
FROM 
    sometable 
WHERE 
    something = %s 
""" 
df = pd.read_sql_query(sql, con=conn,params=[mypythonvariable])