Forty-four: SQLAlchemy's database of realization of complex queries join

 

Ready to work

datetime datetime Import from 

from SQLAlchemy Import create_engine, the Column, Integer, String, the DateTime, a ForeignKey
from sqlalchemy.ext.declarative Import declarative_base
from sqlalchemy.orm Import sessionmaker, Relationship

# database information
Host = '127.0.0.1'
Port = '3306'
Database = 'db_to_sqlalchemy'
username = 'the root'
password = '123456'

widget database # + type connection to the database, pymysql used herein
DB_URI = f'mysql + pymysql: // { username}: {password} @ {host}: { } Port / Database {} '

engine = create_engine (DB_URI) engine # Create
base = declarative_base (engine) # declarative_base create a base class using
the session sessionmaker = (engine) ()


class the User (base):
__tablename__ =' User '
id = Column(Integer, primary_key=True, autoincrement=True)
username = Column(String(50), nullable=False)

def __repr__(self):
return f'username: {self.username}'


class Article(Base):
__tablename__ = 'article'
id = Column(Integer, primary_key=True, autoincrement=True)
title = Column(String(50), nullable=False)
create_time = Column(DateTime, nullable=False, default=datetime.now)
uid = Column(Integer, ForeignKey('user.id'))
author = relationship('User', backref='article')

def __repr__(self):
return f'title: {self.title}'


Base.metadata.drop_all() # 删除所有表
Base.metadata.create_all() # 创建表

user1 = User(username='user1')
for x in range(1):
article = Article(title=f'title{x}')
article.author = user1
session.add(article)
session.commit()

user2 = User(username='user2')
for x in range(1, 3):
article = Article(title=f'title{x}')
article.author = user2
session.add(article)
session.commit()

 

Find all users, sorted by number of articles

SQL statement to achieve

SQLAlchemy achieve

Since construction has been used outside, it will automatically be associated with Article.uid User.id

 

Guess you like

Origin www.cnblogs.com/zhongyehai/p/11830154.html