SQLAlchemy

sum, avg, count, max, group_by, distinct SQLAlchemy

       


        from sqlalchemy import func

        #rows = session.query(Person).count()

        c.count = Session.query(func.count(Person.id)).scalar()

        c.avg = Session.query(func.avg(Person.id).label('average')).scalar()
       
        c.sum = Session.query(func.sum(Person.id).label('average')).scalar()
        
        c.max = Session.query(func.max(Person.id).label('average')).scalar() 


Group by

c.coutg = Session.query(func.count(Person.id).label('count'), Person.name ).group_by(Person.name).all()

templet:

Group count
 <br>
count g
<table  border="1">
% for a in c.coutg:
    <tr>
        
        <td>${ a.name } </td> <td> ${ a.count }</td>
    </tr>
% endfor

Distinct

from sqlalchemy import distinct

# count distinct "name" values
session.query(func.count(distinct(User.name)))
By bm on September 12, 2014 | SQLAlchemy | A comment?

join SQLAlchemy

Eg : 1

        query = Session.query(Person)
        
        query = query.join(Address, Address.person_id == Person.id)
        
        query = query.filter(Address.city == "abccity")
        
        c.j2 = query.all()

Eg : 2

 

c.jo = Session.query(Address.city, Person.name).filter(Address.person_id==Person.id).all()
By bm on | pylon, SQLAlchemy | A comment?

model example SQLAlchemy

"""Person model"""
from sqlalchemy import Column
from sqlalchemy.types import Integer, String

from pylontutor.model.meta import Base

class Person(Base):
    __tablename__ = "person"

    id = Column(Integer, primary_key=True)
    name = Column(String(100))
    email = Column(String(100))

    def __init__(self, name='', email=''):
        self.name = name
        self.email = email

    def __repr__(self):
        return "<Person('%s')" % self.name
By bm on | pylon, SQLAlchemy | A comment?

Delete statement SQLAlchemy

Eg : 1

def delete(self):
titles = request.POST.getall('title')
pages = self.page_q.filter(Page.title.in_(titles))
for page in pages:
Session.delete(page)
Session.commit()

redirect_to('pages')

Eg : 2

from sqlalchemy import delete

d = delete(page_table, page_table.c.id==1)
connection.execute(d)

 

By bm on | SQLAlchemy | A comment?

Update statement SQLAlchemy

Eg : 1

page = self.page_q.filter_by(title=title).first()
page.content=escape(request.POST.getone('content'))
Session.commit()

Eg: 2

from sqlalchemy import update

u = update(page_table, page_table.c.title==u'New Title')
connection.execute(u, title=u"Updated Title")

 

equal to =>
UPDATE page SET title=? WHERE page.title = ?
[u’Updated Title’, u’New Title’]

By bm on | SQLAlchemy | A comment?

Insert statement SQLAlchemy

Eg : 1

page = Page(title=title)
Session.add(page)
Session.commit()

 

p = Person( name='acb', email='[email protected]')
Session.add(p)
Session.commit()

Eg : 2

from object_test import session
import model

test_page = model.Page()
test_page.title = u'Test Page'
test_page.content = u'Test content'
session.add(test_page)
session.commit()

 

 

 

http://pylonsbook.com/en/1.1/introducing-the-model-and-sqlalchemy.html#queries

By bm on | SQLAlchemy | A comment?