[sqlite]parameters are not allowed in views

2020년 11월 30일 by 진아사랑해

    [sqlite]parameters are not allowed in views 목차
반응형

sqlite를 처음 사용하면서 많은 부분에서 버벅대고 있다

점수 필드가 들어있는 테이블을 만들고

점수에 따른 ranking을 부여하여

내가 몇 등인지 알아내고

내 주변에 위로 4, 아래로 5...즉, 총 10개를 출력하는 문제를 만났다

 

맨 처음에 

sql_3 = '''CREATE TEMP VIEW seouluser AS SELECT * FROM ( 

            SELECT

            name,

            score,

            RANK () OVER ( 

                ORDER BY score DESC

            ) LengthRank 

        FROM

            initial_thunder

        ) 

        WHERE 

            name = {};

        '''

cur.execute(sql_3, ('이룸',)) 으로 실행하니 제목의 에러가 나왔다

 

CREATE VIEW 에서는 WHERE name= ? 즉 ? 를 사용할 수 없다

 

위 문장을 그대로 실행시키려면

sql_3 = '''CREATE TEMP VIEW seouluser AS SELECT * FROM ( 

            SELECT

            name,

            score,

            RANK () OVER ( 

                ORDER BY score DESC

            ) LengthRank 

        FROM

            initial_thunder

        ) 

        '''

cur.execute(sql_3)를 실행하여 seouluser라는 임시 VIEW 테이블을 만들고

SELECT name, salary FROM seouluser WHERE name= ?

이런 형식으로 사용하여야 한다.

 

참고: stackoverflow.com/questions/54772449/system-data-sqlite-parameters-not-allowed-in-view-how-to-protect-against-sql

 

 

 

반응형