博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlalchemy的join使用
阅读量:4979 次
发布时间:2019-06-12

本文共 2340 字,大约阅读时间需要 7 分钟。

——、先看mysql的join链接方法

#encoding: utf-8from sqlalchemy import create_engine,Column,Integer,String,Float,func,and_,or_,Enum,\    ForeignKey,DateTimefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import sessionmaker,relationshipfrom random import randintfrom datetime import datetimeHOSTNAME = '127.0.0.1'PORT = 3306DATABASE = 'first_sqlalchemy'USERNAME = 'root'PASSWORD = '123456'#dialect+driver://username:password@host:port/databaseDB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/" \         "{db}?charset=utf8".format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)engine = create_engine(DB_URI)Base = declarative_base(engine)# Session = sessionmaker(engine)# session = Session()session = sessionmaker(engine)() #Session(**local_kw)class User(Base):    __tablename__ = 'user'    id = Column(Integer,primary_key=True,autoincrement=True)    username = Column(String(32),nullable=False)    # articles = relationship("Article") #获取用户发布所有文章    def __repr__(self):        return '
'%self.usernameclass Article(Base): __tablename__ = 'article' id = Column(Integer,primary_key=True,autoincrement=True) title = Column(String(50),nullable=False) create_time = Column(DateTime,default=datetime.now) uid = Column(Integer,ForeignKey('user.id',ondelete='RESTRICT')) author = relationship('User',backref='articles') #sqlalchemy orm提供的 def __repr__(self): return '
'%self.title# Base.metadata.drop_all()## Base.metadata.create_all()## user1 = User(username='zhiliao')# user2 = User(username='ketang')## for x in range(1):# article = Article(title='title%s'%x)# article.author = user1# session.add(article)# session.commit()### for x in range(1,3):# article = Article(title='title%s'%x)# article.author = user2# session.add(article)# session.commit()#找到所有的用户,根据文章的数量进行排序result = session.query(User.username,func.count(Article.id)).join(Article,User.id==Article.uid).\ group_by(User.id).order_by(func.count(Article.id).desc()).all()print(result)#[('ketang', 2), ('zhiliao', 1)]'''SELECT user.username AS user_username, count(article.id) AS count_1 FROM user INNER JOIN article ON user.id = article.uid GROUP BY user.id ORDER BY count(article.id)'''

 

转载于:https://www.cnblogs.com/wuheng-123/p/9719812.html

你可能感兴趣的文章
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
mysql adddate()函数
查看>>
mysql sin() 函数
查看>>
单片机复位电路
查看>>
php json_decode失败,返回null
查看>>
3-day3-list-truple-map.py
查看>>
Edit控件显示多行文字
查看>>
JS第二周
查看>>
dataTable.NET的search box每輸入一個字母進行一次檢索的問題
查看>>
Python 文件处理
查看>>
邻接表详解
查看>>
迭代dict的value
查看>>
eclipse package,source folder,folder区别及相互转换
查看>>
Py 可能是最全面的 python 字符串拼接总结(带注释版)
查看>>
《Java程序设计实验》 软件工程18-1,3 OO实验2
查看>>
【Herding HDU - 4709 】【数学(利用叉乘计算三角形面积)】
查看>>
OPENSSL使用方法
查看>>
开发WINDOWS服务程序
查看>>
cross socket和msgpack的数据序列和还原
查看>>
解决跨操作系统平台JSON中文乱码问题
查看>>