Relational Databases: Object Relational Mappers - SQLObject

Slides:



Advertisements
Similar presentations
CHAPTER OBJECTIVE: NORMALIZATION THE SNOWFLAKE SCHEMA.
Advertisements

Managing Data Resources
Information Technology in Organizations
1 Chapter 2 Reviewing Tables and Queries. 2 Chapter Objectives Identify the steps required to develop an Access application Specify the characteristics.
Managing Data Resources. File Organization Terms and Concepts Bit: Smallest unit of data; binary digit (0,1) Byte: Group of bits that represents a single.
Relational Databases: Object Relational Mappers - SQLObject BCHB Lecture 22 11/14/2014BCHB Edwards.
Web-Applications: TurboGears II BCHB Lecture 26 12/03/2014BCHB Edwards.
Relational Databases: Object Relational Mappers – SQLObject II BCHB Lecture 23 11/20/2013BCHB Edwards.
Database Technical Session By: Prof. Adarsh Patel.
Relational Databases: Basic Concepts BCHB Lecture 21 11/12/2014BCHB Edwards.
Database System Concepts, 6 th Ed. ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Chapter 2: Intro to Relational.
Chapter 2 Adapted from Silberschatz, et al. CHECK SLIDE 16.
Lecture2: Database Environment Prepared by L. Nouf Almujally 1 Ref. Chapter2 Lecture2.
Database System Concepts, 6 th Ed. ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com ICOM 5016 – Introduction.
DataBase Management System What is DBMS Purpose of DBMS Data Abstraction Data Definition Language Data Manipulation Language Data Models Data Keys Relationships.
M1G Introduction to Database Development 5. Doing more with queries.
Chapter 2: Intro to Relational Model. 2.2 Example of a Relation attributes (or columns) tuples (or rows)
Indexes and Views Unit 7.
Managing Data Resources. File Organization Terms and Concepts Bit: Smallest unit of data; binary digit (0,1) Byte: Group of bits that represents a single.
Relational Databases: Basic Concepts BCHB Lecture 21 By Edwards & Li Slides:
Web-Applications: TurboGears II BCHB Lecture 26 12/7/2015BCHB Edwards.
Web-Applications: TurboGears BCHB Lecture 25 12/02/2015BCHB Edwards.
Population by Eleanor Joyce City of Salem Schools.
Faeez, Franz & Syamim.   Database – collection of persistent data  Database Management System (DBMS) – software system that supports creation, population,
Introduction to Database Programming with Python Gary Stewart
Databases and DBMSs Todd S. Bacastow January
Relational Databases: Basic Concepts
A Guide to SQL, Seventh Edition
Chapter 4 Attribute Data.
Web-Applications: TurboGears
Relational Databases: Object Relational Mappers - SQLObject
© 2016, Mike Murach & Associates, Inc.
Introduction to Relational Model
Chapter 2: Relational Model
Information Systems Today: Managing in the Digital World
The stakes of Development: from development to sustainable development
Chapter 2: Intro to Relational Model
Chapter 3: Intro to Relational Model
Chapter 2: Intro to Relational Model
Database Normalization
Introduction to Relational Databases
Chapter 2: Intro to Relational Model
Databases and Information Management
CTFS Asia Region Workshop 2014
Relational Algebra 461 The slides for this text are organized into chapters. This lecture covers relational algebra, from Chapter 4. The relational calculus.
1 Demand of your DB is changing Presented By: Ashwani Kumar
MANAGING DATA RESOURCES
File Systems and Databases
Chapter 4 The Relational Model Pearson Education © 2009.
Systems Analysis and Design
MANAGING DATA RESOURCES
Relational Databases: Object Relational Mappers – SQLObject II
Databases and Information Management
Lecture 2 Database & SQL Continued
Advanced Python Concepts: Exceptions
國立臺北科技大學 課程:資料庫系統 2015 fall Chapter 14 Normalization.
Relational Database Design
Logical Data Modeling – Normalization
Relational Databases: Basic Concepts
Relational Databases: Basic Concepts
Chapter 2: Intro to Relational Model
Relational Databases: Object Relational Mappers – SQLObject II
Advanced Python Concepts: Exceptions
Relational Databases: Object Relational Mappers – SQLObject II
SQL Basics BCHB697.
Relational Databases: Object Relational Mappers - SQLObject
Databases and Information Management
Indexes and Performance
Course Instructor: Supriya Gupta Asstt. Prof
INTRODUCTION A Database system is basically a computer based record keeping system. The collection of data, usually referred to as the database, contains.
Presentation transcript:

Relational Databases: Object Relational Mappers - SQLObject BCHB524 Lecture 22 BCHB524 - Edwards

Outline Object relational mappers Minimal SQLObject example Tables as classes, rows as instances Advantages & disadvantages Minimal SQLObject example Legacy databases Exercises BCHB524 - Edwards

Relational Databases Store information in a table Rows represent items Columns represent items' properties or attributes Name Continent Region Surface Area Population GNP Brazil South America 8547403 170115000 776739 Indonesia Asia Southeast Asia 1904569 212107000 84982 India Southern and Central Asia 3287263 1013662000 447114 China Eastern Asia 9572900 1277558000 982268 Pakistan 796095 156483000 61289 United States North America 9363520 278357000 8510700 BCHB524 - Edwards

... as Objects Objects have data members or attributes. Store objects in a list or iterable. Abstract away details of underlying RDBMS c1 = Country() c1.name = 'Brazil' c1.continent = 'South America' c1.region = 'South America' c1.surfaceArea = 8547403 c1.population = 170115000 c1.gnp = 776739 # initialize c2, ..., c6 countryTable = [ c1, c2, c3, c4, c5, c6 ] for cnty in countryTable:     if cnty.population > 100000000:         print cnty.name, cnty.population BCHB524 - Edwards

Pros and Cons Pros: Learn one language Ease of development Simplified joins One set of data-types Easy storage of higher-level objects Can apply the power of python as necessary Abstract away RDBMS Distribute CPU load Cons: Execution speed Sometimes forced into poor strategies Optimal SQL construct may be impossible Tend not to take advantage of RDBMS quirks. Can be difficult to apply to legacy databases BCHB524 - Edwards

SQLObject Just one of many object-relational mappers Each tool makes different tradeoffs in Table/row/attribute abstraction How much SQL you need to know Overhead Ease of adapting to legacy databases SQLObject is almost completely devoid of SQL and is almost entirely "objecty". See http://sqlobject.org. BCHB524 - Edwards

Minimal SQLObject Example: Define the database model (model.py) from sqlobject import * import os.path dbfile = 'myworld.db3' # Magic formatting for database URI conn_str = os.path.abspath(dbfile) conn_str = 'sqlite:'+ conn_str sqlhub.processConnection = connectionForURI(conn_str) class Country(SQLObject):     name = StringCol()     continent = StringCol()     region = StringCol()     surfaceArea = FloatCol()     population = IntCol()     gnp = FloatCol() BCHB524 - Edwards

Minimal SQLObject Example: Populate the database from model import Country # Initialize the table Country.createTable() # Add some rows c = Country(name="Brazil", continent="South America",             region="South America", surfaceArea=8547403,             population=170115000, gnp=776739) c = Country(name="China", continent="Asia",             region="Eastern Asia", surfaceArea=9572900,             population=1277558000, gnp=982268) # ... c = Country(name="United States", continent="North America",             region="North America", surfaceArea=9363520,             population=278357000, gnp=8510700) # Retrieve and print all countries for c in Country.select():     print c.id, c.name, c.continent, c.gnp from model import Country # Initialize the table Country.createTable() # Add some rows c = Country(name="Brazil", continent="South America", region="South America", surfaceArea=8547403, population=170115000, gnp=776739) c = Country(name="Indonesia", continent="Asia", region="Southeast Asia", surfaceArea=1904569, population=212107000, gnp=84982) c = Country(name="India", continent="Asia", region="Southern and Central Asia", surfaceArea=3287263, population=1013662000, gnp=447114) c = Country(name="China", continent="Asia", region="Eastern Asia", surfaceArea=9572900, population=1277558000, gnp=982268) c = Country(name="Pakistan", continent="Asia", surfaceArea=796095, population=156483000, gnp=61289) c = Country(name="United States", continent="North America", region="North America", surfaceArea=9363520, population=278357000, gnp=8510700) # Retrieve and print all countries for c in Country.select(): print c.id, c.name, c.continent, c.gnp BCHB524 - Edwards

Minimal SQLObject Example: Access/Change the database from model import Country # Change country #6 c = Country.get(6) c.name = 'United States of America' # Retrieve and print all countries for c in Country.select():     print c.id, c.name, c.continent, c.gnp BCHB524 - Edwards

Minimal SQLObject Example: Access the rows as objects from model import Country # Select countries with more than 500,000,000 in population for c in Country.select(Country.q.population >= 500000000):     print "A:", c.id, c.name, c.population # Select countries that start with 'U' for c in Country.select(Country.q.name.startswith("U")):     print "B:", c.id, c.name, c.population # Lookup by id, exactly 1 country with each id c = Country.get(5) print "C:", c.id, c.name, c.population # Get exception for bad id # c = Country.get(100) # Shortcut for select, countries with continent == 'Asia' for c in Country.selectBy(continent = 'Asia'):     print "D:", c.id, c.name, c.population BCHB524 - Edwards

Legacy databases If the legacy database is well-structured, SQLObject can figure out (most of) the definitions If there is no id column... Need to tell SQLObject what to use for the ID. May need to specify the id at instantiation time. Have to fill in MultipleJoins and ForeignKeys yourself Need to declare which columns in two different tables should correspond. Enables SQLObject to make relationships explicit Enables SQLObject to turn joins into lists BCHB524 - Edwards

Legacy databases from sqlobject import * import os.path dbfile = 'taxa.db3' conn_str = os.path.abspath(dbfile) conn_str = 'sqlite:'+ conn_str sqlhub.processConnection = connectionForURI(conn_str) class Taxonomy(SQLObject):     class sqlmeta:         idName = "tax_id"         fromDatabase = True     names = MultipleJoin('Name', joinColumn="tax_id") class Name(SQLObject):     class sqlmeta:         fromDatabase = True     taxa = ForeignKey('Taxonomy', dbName="tax_id") BCHB524 - Edwards

Legacy databases # Set up data-model from model import * # get homo sapiens hs1 = Taxonomy.get(9606) # select the Taxonomy object # with scientific name Homo sapiens hs2 = Taxonomy.selectBy(scientificName='Homo sapiens')[0] # get the name human try:     hsname = Name.selectBy(name='human')[0] except IndexError:     print "Can't find name 'human'"     sys.exit(1) # get the Taxonomy object from the Name object # Uses the magic Foreign Key attribute hs3 = hsname.taxa # hs1, hs2, hs3 the same! print hs1 print hs2 print hs3 BCHB524 - Edwards

Legacy databases # Set up data-model from model import * # get homo sapiens hs = Taxonomy.get(9606) # find rows in the Name table with taxa the same as hs # Use ForeignKey to create condition, equality test # between objects condition = (Name.q.taxa == hs) for n in Name.select(condition):     print n # find rows in the Name table corresonding to hs # Easy shortcut, using MultipleJoin iterable for n in hs.names:     print n.name, "|", n.nameClass # More general conditions condition = Name.q.name.startswith('Da') for n in Name.select(condition):     print n.name, "|", n.nameClass BCHB524 - Edwards

Exercises Read through the SQLObject documentation Write a python program using SQLObject to lookup the scientific name for a user-supplied organism name. BCHB524 - Edwards