>

id_param = 1
period_param = '201801,201802,201803'
rows = session.execute("""select * from table where id =%s and period in (%s)""",
                      (id_param,period_param ))

단일 기간을 지나갈 때 실행할 수는 있지만 IN 절을 사용하여 여러 값을 전달하려고 시도 할 수 없습니까?

문제는 문자열과 목록 형식입니다. 그러나 내 기간은 201801,201802 와 같은 정수 만 허용합니다.  매개 변수 값을 전달하는 방법? 목록을 처리하고 정수로 변환하고 쿼리에 전달하는 트릭이 있습니까? 유닉스 쉘 파일을 통과 할 때 매개 변수를 파이썬 목록으로 변환합니까?

  • 답변 # 1

    join() 를 사용할 수 있습니다  다음과 같은 문자열로 목록을 가져옵니다.

    period_param_from_list = ','.join(str(x) for x in a_list)
    
    

    테스트 코드 :

    period_param = '201801,201802,201803'
    a_list = [int(x) for x in period_param.split(',')]
    period_param_from_list = ','.join(str(x) for x in a_list)
    print(a_list)
    print(period_param_from_list)
    
    

    결과 :

    [201801, 201802, 201803]
    201801,201802,201803
    
    

    질문으로서

    period_param = [201801, 201802, 201803]
    rows = session.execute(
        """select * from table where id =%s and period in (%s)""",
        (id_param, ','.join(str(x) for x in period_param)))
    
    

관련 자료

  • 이전 asterisk - Linphone을 FreePBX 환경에 연결할 수 없습니다
  • 다음 c# - SystemDataSQLite 및 json_each ()를 사용하여 JSON 필터링