2017-11-28 1 views
0

Flask/SQLAlchemy 프로젝트에는 쿼리하는 해당 테이블 개체가있는 Styles_Index라는 인덱스 테이블이 있습니다. ) (sqlite3를의 스키마는SQLAlchemy 테이블 이름을 두 개의 밑줄로 변경했습니다.

CREATE TABLE Styles_Index 
(
    beer_id integer not null, 
    style_id integer not null, 
    primary key (beer_id, style_id) 
); 

처럼 보이는 그리고 내가 SQLAlchemy의 BaseQuery.join를 통해 공통 키를 공유하는 또 다른에 테이블을 조인 할 때 파이썬의 객체는

class Styles_Index(db.Model): 
    beer_id = db.Column(db.Integer, db.ForeignKey('beers.id'), 
      primary_key = True) 
    style_id = db.Column(db.Integer, db.ForeignKey('styles.id'), 
      primary_key = True) 

처럼 보인다

SELECT styles__index.id AS styles__index_id, 
    styles__index.beer_id AS styles__index_beer_id, 
    styles__index.style_id AS styles__index_style_id 
    FROM styles__index JOIN styles ON styles__index.style_id = styles.id 
    LIMIT ? OFFSET ? 

여기서 Styles_Index는 하나가 아닌 두 개의 밑줄을 포함합니다. SQL의 _ 와일드 카드 문자로 인한 의도적 인 디자인 선택입니까? 원시 SQL을 쓰지 않고이 쿼리를 작성하는 더 좋은 방법이 있습니까?

+0

일반적인 파이썬 클래스 구문은 클래스 케이스 즉 StylesIndex (PEP 8 기준)를 사용하는 것인가요? 그 옵션입니까? –

+0

그것은 확실히 선택 사항입니다, 나는 그것을 시도하고 무슨 일이 일어나는 지 보도록하겠습니다. 내가 그것을 피할 수 있으면 차라리 테이블 이름을 바꾸지 않을 것입니다. –

+0

생성 된 테이블 이름과 구문을 확인하십시오. –

답변

1

레코드의 경우 MyClassName과 같은 PEP 8 고유 이름을 사용하면 이러한 문제가 발생하지 않습니다.

관련 문제