programing

SQL 화학에서 MariaDB의 COLUMN_GET() 사용

minimums 2023. 7. 27. 21:46
반응형

SQL 화학에서 MariaDB의 COLUMN_GET() 사용

MariaDB는 동적 열을 허용합니다. 동적 열은 사용자가 거의 없는 데이터 집합입니다.COLUMN_ADD()그리고.COLUMN_GET()기능들.

그러나 SQL 화학에서 동적 열을 사용하는 방법을 찾을 수 없습니다.시도한 결과:

from sqlalchemy.sql import func

...

query = session.query(
    func.COLUMN_GET(DynamicInfo.dyn_col, 256)
).filter(
    DynamicInfo.index_id == index
)

다음 SQL을 생성합니다.

SELECT COLUMN_GET(dyn_info.dyn_col, %(COLUMN_GET_2)s) AS `COLUMN_GET_1`
FROM dyn_info
WHERE dyn_info.index_id = %(index_1)s

문제는 이것이 다음에 대한 잘못된 구문이라는 것입니다.COLUMN_GET()형식과 값을 포함해야 합니다.우리는 어떻게 해야 할지 모르겠어요COLUMN_GET(dyn_info.dyn_col, 256 AS INT)SQL을 직접 작성하지 않아도 됩니다(이는 SQL 연금술을 사용할 경우 얻을 수 있는 대부분의 이점을 무효화합니다).


또한 열이 처리되는 방식에 대한 SQL 화학 소스 코드를 많이 살펴보았습니다. 이 형식을 복사하여 사용자 지정 비교기를 정의할 수 있기를 바랍니다.문제는 동적 열이 호출될 때 인덱스 매개 변수를 필요로 한다는 데 있으며, 이는 COLUMN_GET() 함수를 가장 쉽고 깨끗한 솔루션으로 적절하게 정의할 수 있습니다.

이 답변은 SQLAlchemy의 향후 개발로 인해 더 이상 사용할 수 없지만 SQLAlchemy 수단을 사용하여 나만의 절 요소를 구축하는 것이 유용하다는 것을 알게 되었습니다.아마도 sqlalchemy-full text-search 프로젝트에서 가장 좋은 예를 찾을 수 있을 것입니다.

하위 분류별ClauseElement그리고 그것을 컴파일하면, 기능뿐만 아니라 SQL 화학 무기에 거의 모든 것을 추가할 수 있습니다.이 예제에서는 필요한 경우 클래스를 계측하는 방법도 보여 줍니다(연결된 예제에서는 특수 인덱스를 정의하는 방법).

또한 이렇게 하면 방언별 구문을 추가할 수 있습니다.

제 생각에, 당신은 당신의 사건에 필요한 모든 재료를 찾을 수 있을 것입니다.

물론 SQL 화학은 모든 SQL 텍스트를 전달할 수 있지만, 여기서 흥미로운 것은 Pythonic 구문이라고 생각합니다.

언급URL : https://stackoverflow.com/questions/46546243/using-mariadbs-column-get-in-sqlalchemy

반응형