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を書くことなく、このクエリを書く良い方法がありますか?
通常のPythonクラスの構文では、クラスケース、つまりStylesIndex(PEP 8のとおり)を使用します。これはオプションですか? –
それは確かにオプションです、私はそれを試してみて、何が起こるか見てみましょう。もし私がそれを避けることができれば、私はテーブル名を変更したくないでしょう。 –
生成するテーブル名と構文を確認してください。 –