2012-02-10 5 views
2

일반적으로 SQL 문만 SELECT 조건으로 사용할 수 있습니다 (WHERE 절 사용). 그러나 Python (또는 SQL을 불러올 수있는 언어) 문을 SELECT 조건으로 사용하는 것이 유용 할 때도 있습니다.python 문을 SQLite에서 SELECT 조건으로 사용하는 방법?

예를 들어, Point 구조가 테이블에 저장되는 in the document of sqlite3 module of python의 예가 있습니다. 그러나 Point 구조를 사용하여 테이블을 쿼리하기는 어렵습니다. 예를 들어, x 좌표가 4 인 모든 점을 선택하는 SELECT p FROM table WHERE P.x=4을 원합니다. 그러나 P.x은 SQL 문이 아닌 파이썬 문이므로 SELECT 문은 작동하지 않습니다.

또 다른 예는 SELECT 조건이 SQL 언어에 비해 너무 복잡 할 때입니다. 말하자면, mod 4가 3이거나 이와 같은 모든 정수를 SELECT하고 싶습니다.

그래서이 작업을 수행 할 생각이 있습니까? 고맙습니다!

EDIT : zam664의 대답과 관련하여 첫 번째 예제에서는 P_X 및 P_Y를 사용할 수 있습니다. 그러나 p가 알 수없는 길이의 목록 (어댑터를 사용하여 테이블에 저장할 수 있음)이고 SELECT p FROM table WHERE 2 in p을 원할 경우 어떻게됩니까? 나는 이것이 유용한 경우라고 생각한다.

+2

그냥 메모; 데이터베이스는 파이썬을 실행하지 않고 SQL 만 실행할 수 있기 때문에 (예 : 파이썬 쿼리를 자동으로 SQL로 변환해야합니다), SQL로 표현하기에는 너무 복잡한 쿼리는 파이썬으로 작성하면 여전히 복잡합니다. 파이썬이 복잡성과 관련하여 도움을 줄 수있는 유일한 방법은 데이터베이스에서 쿼리의 일부를 자동으로 수행하고 결과를 다시 얻으면 코드에 한 번만 첨가하는 것입니다. –

답변

0

SQL과 Python 코드 사이에서로드를 분할해야합니다. SQL이 if의 대부분을 가져올 수 있도록 테이블의 데이터를 적절하게 구조화해야하고 복잡한 작업을 위해 나머지를 기록하십시오.

대부분의 SQLite를 SQLite에서 사용할 수 있도록 만들어야합니다. 당신은 당신의 데이터를 꺾을 필요가있을뿐입니다. 예를 들어 x 및 y 필드가있는 점은 SQLite에서 P_X 및 P_Y와 같은 2 개의 필드로 분할해야합니다.

SQLite는 객체 DBMS가 아닌 관계형 DBMS입니다. DBMS 객체가 필요하다면 SQLite는 잘못된 작업입니다.

+0

답변 해 주셔서 감사합니다. 그러나이 분할 데이터 방법이 실패하는 경우도 있습니다. 자세한 내용은 EDIT를 참조하십시오. – Roun

0

데이터는 다음과 같이 저장됩니다. 분리 된 문자열 목록을 사용하면 다음과 같이 할 수 있습니다.

SELECT point FROM test WHERE point LIKE '%x=4% 

잘못된 테이블 및 열 이름을 사용하여 예약시.

+0

위와 관련된 행운이 있습니까? – Kristofer

관련 문제