Beräkna värden i en fråga

Introduktion till databaser i Python

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Matematiska operatorer

  • addition +
  • subtraktion -
  • multiplikation *
  • division /
  • modulus %
  • Fungerar olika för olika datatyper
Introduktion till databaser i Python

Beräkna differens

stmt = select([census.columns.age,           
        (census.columns.pop2008 -
        census.columns.pop2000).label('pop_change')
    ])

stmt = stmt.group_by(census.columns.age) stmt = stmt.order_by(desc('pop_change'))
stmt = stmt.limit(5)
results = connection.execute(stmt).fetchall() print(results)
[(61, 52672), (85, 51901), (54, 50808), (58, 45575),
(60, 44915)]
Introduktion till databaser i Python

Case-sats

  • Används för att behandla data olika beroende på ett villkor
  • Tar emot en lista med villkor att matcha och en kolumn att returnera vid träff
  • Listan avslutas med en else-sats som avgör vad som sker när ingen post matchar något villkor
Introduktion till databaser i Python

Case-exempel

from sqlalchemy import case

stmt = select([ func.sum( case([ (census.columns.state == 'New York', census.columns.pop2008) ], else_=0))])
results = connection.execute(stmt).fetchall() print(results)
[(19465159,)]
Introduktion till databaser i Python

Cast-sats

  • Konverterar data till en annan typ
  • Användbart för att konvertera...
    • heltal till flyttal för division
    • strängar till datum och tider
  • Tar emot en kolumn eller ett uttryck samt måltypen
Introduktion till databaser i Python

Procentexempel

from sqlalchemy import case, cast, Float

stmt = select([ (func.sum( case([ (census.columns.state == 'New York', census.columns.pop2008) ], else_=0)) / cast(func.sum(census.columns.pop2008), Float) * 100).label('ny_percent')])
results = connection.execute(stmt).fetchall() print(results)
[(Decimal('6.4267619765'),)]
Introduktion till databaser i Python

Nu kör vi en övning!

Introduktion till databaser i Python

Preparing Video For Download...