ホームページ  >  記事  >  バックエンド開発  >  Python フラスコの多対多テーブル クエリの詳細な例

Python フラスコの多対多テーブル クエリの詳細な例

零下一度
零下一度オリジナル
2017-06-29 15:37:512042ブラウズ

フラスコの学習では、必然的に多対多のテーブルクエリに遭遇します。私も今日この問題に遭遇しました。参考までに私のアイデアを Script Home プラットフォームに共有させてください

flask の研究では、必然的に多対多のテーブル クエリに遭遇します。私も今日この問題に遭遇しました。それから私は長い間考えました。解決策が思い浮かばず、いくつかの方法を試しましたが、私の思考の限界で諦めたのかもしれません。その後、オンラインで百度にアクセスしましたが、百度の結果との間にはまだ一定のギャップがあることがわかりました。そこで、Baidu から得たアイデアに基づいて、データ構造を調べてみましょう。まず、私が作成したデータベース コードの一部を示します。理解を深めます。


post_class=db.Table('post_class',
  db.Column('post_id',db.Integer(),db.ForeignKey('posts.id')),
  db.Column('classifa_id',db.Integer(),db.ForeignKey('fenlei.id')))
class Post(db.Model):#文章表
  tablename='posts'
  id=db.Column(db.Integer,primary_key=True,autoincrement=True)
  title=db.Column(db.String(255),unique=True)
  text=db.Column(db.Text())
  publish_date=db.Column(db.DateTime,default=datetime.datetime.now())
  user_id=db.Column(db.Integer,db.ForeignKey('users.id'))
  is_recomment=db.Column(db.Boolean,default=False)
  comments = db.relationship(
    'Comment',
    backref='posts',
    lazy='dynamic')
  tag = db.relationship(
    'Tag',
    secondary=posts_tags,
    backref=db.backref('posts', lazy='dynamic')
  )
  classname=db.relationship('Classifa',
    secondary=post_class,
    backref=db.backref('posts'))
  def repr(self):
    return "<Model Post `{}`>".format(self.title)
class Classifa(db.Model):#分类
  tablename=&#39;fenlei&#39;
  id=db.Column(db.Integer(),primary_key=True)
  name=db.Column(db.String(64))
  def repr(self):
    return self.name

ここには 3 つのテーブルがあります。1 つは記事のリストで、もう 1 つは分類テーブルです。記事は同時に複数のカテゴリに属する​​可能性があるので、考えてみましょう。このロジックは誰でも理解できると思います。では、3 番目のテーブルには多対多の関係が表示されています。実際、現在必要なのは、すべてのカテゴリを分類することです。以下の記事、

私のコードを見てみましょう


data=Classifa.query.filter_by(name=&#39;数据库&#39;).first()
 data_post=data.posts

ここでは、カテゴリからこのカテゴリを直接見つけて、3番目のテーブルを通じてこのカテゴリに属する​​記事をクエリします。実際、これは非常に簡単です。たぶん、当時は自分が何を正しいと思っていたのか分かりませんでした。ただ、当時は何かを見落としていただけです。さあ、前に進む途中で学びましょう。

以上がPython フラスコの多対多テーブル クエリの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。