本文的示例代码参考peewee_basic
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import logging
from peewee import *
from config import config
logging.basicConfig(
filename="./logs/output.log",
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
)
database = MySQLDatabase(
config["mysql_db"],
user=config["mysql_user"],
password=config["mysql_pwd"],
host=config["mysql_url"],
port=int(config["mysql_port"]),
)
class BaseModel(Model):
class Meta:
database = database
class Article(BaseModel):
class Meta:
table_name = "article"
id = IntegerField(primary_key=True)
title = CharField(max_length=255)
description = CharField(max_length=1024)
class ArticleCategory(BaseModel):
class Meta:
table_name = "article_category"
id = IntegerField(primary_key=True)
lable = CharField(max_length=255)
class ArticleCategoryMap(BaseModel):
class Meta:
table_name = "article_category_map"
article = ForeignKeyField(Article, db_column="article_id")
category = ForeignKeyField(ArticleCategory, db_column="category_id")
query = (
Article.select()
.join(ArticleCategoryMap)
.join(ArticleCategory)
.where(ArticleCategory.lable == "客户案例")
.where(Article.id < "30")
)
count = query.count()
logging.info("[Count] {v}".format(v=count))
articles = query.order_by(Article.id.desc()).paginate(1, 5).dicts()
for article in articles:
logging.info("[Article] {v}".format(v=article))