2017-11-28 25 views
0

私のFlask/SQLAlchemyプロジェクトでは、私が照会する対応するテーブルオブジェクトを持つStyles_Indexというインデックステーブルがあります。 sqlite3のスキーマSQLAlchemyが2つのアンダースコアを持つテーブル名を変更する

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

のように見え、私はSQLAlchemyのBaseQuery.join(介して共通鍵を共有している他の上のテーブルに参加しようとするのpythonのオブジェクトが

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には1つではなく2つのアンダースコアがあります。 これはSQLのワイルドカード文字のための意図的な設計の選択ですか?生のSQLを書くことなく、このクエリを書く良い方法がありますか?

+0

通常のPythonクラスの構文では、クラスケース、つまりStylesIndex(PEP 8のとおり)を使用します。これはオプションですか? –

+0

それは確かにオプションです、私はそれを試してみて、何が起こるか見てみましょう。もし私がそれを避けることができれば、私はテーブル名を変更したくないでしょう。 –

+0

生成するテーブル名と構文を確認してください。 –

答えて

1

MyClassNameなどのPEP 8固有の名前を使用すると、そのような問題は発生しません。

関連する問題