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