2009-09-13 5 views
0

SQLObject를 사용하여 MySQL에 잘못된 이름을 사용하는 방법은 무엇입니까? MySQL에서 SQLObject를 통해 잘못된 이름 사용

SELECT `select from` FROM table1 WHERE 1; 

이 ... 필드를 선택하는 데 사용할 수있는 select from라고 :

순수 SQL에서이 역 인용 부호를 사용할 수

는 말한다. 역 인용 부호를 사용하도록 SQLObject를 말할 수 있습니까? SQLObject의에서 select from에 액세스 할 수

+0

을; MySQL의 백틱은 MS SQL Server의 대괄호처럼 비표준입니다. SQL 표준에서는 이러한 식별자를 구분해야하며 큰 따옴표로 묶어야합니다. –

+0

@Jonathan Leffler : 좋습니다. 큰 따옴표도 괜찮을 수 있습니다. 나는 SQLObject 또는 다른 ORM을 통해 잘못된 이름을 가진 기존 DB에 액세스하는 방법을 찾고 있습니다. – Alex

+0

SQL_MODE에서 ANSI 또는 ANSI_QUOTES를 활성화하면 "in MySQL"도 사용할 수 있습니다. – bobince

답변

1
CREATE TABLE table1 (
    id INT(11), 
    `select from` VARCHAR(255), 
    PRIMARY KEY (id) 
); 
INSERT INTO table1 VALUES(1, 'test value'); 

는 역 따옴표로 열 선언 : 그것은 '순수한 SQL'의 당신의 정의에 따라

>>> class Table1(SQLObject): 
...  myIllegallyNamedColumn = Col(dbName="`select from`") 
... 
>>> list(Table1.select()) 
[<Table1 0 myIllegallyNamedColumn='test value'>] 
+0

@ax : 위대한! 주간 내 수수께끼를 풀었습니다. – Alex

+0

나는 이것에 의존하는 것에 대해 조심해야합니다. MySQL 전용으로 SQLObject가 이미 스키마 이름을 제대로 이스케이프 처리하지 못하는 버그 인 것 같습니다. 실제로 라이브러리에서 수정해야합니다 (위의 경우는 깨질 수 있습니다). – bobince