Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI This information is Copyright 2009 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: Package creation for SQLAlchemy 1.2. Name of Document Author/Supplier: Author: Shweta Phabba 1.3 Date of This Document: 25 September, 2009 4. Technical Description =============================================== ARC PROPOSAL FOR SUNWblacs Package Porting ===============================================
1 . Introduction ------------ 1.1 Project Working Name : Package creation for SQLAlchemy (SQL toolkit and Object Relational Mapper for Python) 1.2 Name Of Document Author : Shweta Phabba (shweta.phabba at sun.com) 1.3 Date Of this Document : Aug 17 2009 1.3.1.Project started on 10th August 1.4 Name Of Major Document Customer(s)/Consumer(s) 1.4.1. The PAC or CPT you expect to review your project:Solaris PAC 1.4.2 Sponserer For SUNWblacs : 1.4.3 Name Of Business unit : Systems 1.4.4 Team Name : Sun Grid Engine & HPC 1.5 Email Aliases : 1.5.1 Responsible Manager : manjunath.basappa at sun.com 1.5.2 Responsible Engineer : shweta.phabba at sun.com 2. Project Summary --------------- 2.1 Project Description : The SQLAlchemy SQL Toolkit and Object Relational Mapper is a comprehensive set of tools for working with databases and Python. It has several distinct areas of functionality which can be used individually or combined together. Its major API components, all public-facing, are illustrated below: +-----------------------------------------------------------+ | Object Relational Mapper (ORM) | +-----------------------------------------------------------+ +---------+ +------------------------------------+ +--------+ | | | SQL Expression Language | | | | | +------------------------------------+ | | | +-----------------------+ +--------------+ | | | Dialect/Execution | | Schema Management | +---------------------------------+ +-----------------------+ +----------------------+ +----------------------------------+ | Connection Pooling | | Types | +----------------------+ +----------------------------------+ Above, the two most significant front-facing portions of SQLAlchemy are the Object Relational Mapper and the SQL Expression Language. These are two separate toolkits, one building off the other. SQL Expressions can be used independently of the ORM. When using the ORM, the SQL Expression language is used to establish object-relational configurations as well as in querying. 2.2 Risks And Assumptions : Assumptions: 1. SUNWPython SUNWmysql-python SUNWpysqlite SUNWpython-setuptools Should be available on system Generally it comes with Opensolaris default installation. 3.Technical Description : ----------------------- 3.1 Technical Description For SQLAlchemy ( Using SQLAlcehmy 0.5.5 ) ======================= 1. SQLAlchemy is an SQL database abstraction library for Python. SQLAlchemy provides a full suite of well known enterprise-level persistence patterns, designed for efficient and high-performing database access, adapted into a simple and Pythonic domain language. 2. Extremely easy to use for all the basic tasks, such as: accessing thread-safe and pooled connections, constructing SQL from Python expressions, finding object instances, and commiting object modifications back to the database. 3. Powerful enough for complicated tasks, such as: eager load a graph of objects and their dependencies via joins; map recursive adjacency structures automatically; map objects to not just tables but to any arbitrary join or select statement; combine multiple tables together to load whole sets of otherwise unrelated objects from a single result set; commit entire graphs of object changes in one step. 4.Built to conform to what DBAs demand, including the ability to swap out generated SQL with hand-optimized statements, full usage of bind parameters for all literal values, fully transactionalized and consistent updates using Unit of Work. 5.Modular. Different parts of SQLAlchemy can be used independently of the rest, including the connection pool, SQL construction, and ORM. SQLAlchemy is constructed in an open style that allows plenty of customization, with an architecture that supports custom datatypes, custom SQL extensions, and ORM plugins which can augment or extend mapping functionality. 3.2 Information About SQLALchemy 1. Written in Python. 2. Supports Many Databases as MySQL,SQLite,postgres,Oracle,Firebird, Sybase,MS-Access etc. 3. With ORM This produces the maxiumum efficiency and transaction safety, and minimizes chances of deadlocks. 4. Function-based query construction allows SQL clauses to be built via Python functions and expressions. 5. Database mapping and class design are totally separate. 6. Whole graphs of related objects can often be loaded with a single query that is automatically generated to join the appropriate tables together, known as eager loading. 7. Composite Primary Key . 8. Explicit support is available for single-table, concrete-table, and joined table inheritance. Polymorphic loading (that is, a query that returns objects of multple descendant types) is supported for all three styles. 9. Pre and post procesing of data. 3.3 Security Impact: None. 3.4. Interfaces: Exported Interface SUNWsqlalchemy python library will be ported to /usr/lib/python2.6 as well as /usr/lib/python3.0 Interface Classification Comments ----------- --------------- ---------- SUNWsqlalchemy Uncommited Package Name /usr/lib/python2.6/vendor-packages/ Uncommited Directory For sqlalchemy sqlalchemy library /usr/lib/python2.6/vendor-packages/ Uncommited Directory for SQLAlchemy.egg-info sqlalchemy library /usr/lib/python2.6/vendor-packages/ Uncommited Object relational mapping sqlalchemy/orm library directory. /usr/lib/python2.6/vendor-packages/ Uncommited sqlalchemy/ext /usr/lib/python2.6/vendor-packages/ Uncommited sqlalchemy/engine /usr/lib/python2.6/vendor-packages/ Uncommited sqlalchemy/sql /usr/lib/python2.6/vendor-packages/ Uncommited Directory for different sqlalchemy/databases database support by sqlalchemy /usr/lib/python2.6/vendor-packages/ Uncommited Directory for sqlalchemy sqlalchemy/SQLAlchemy.egg-info And all above mentioned directories will have python libray files . Imported Interfaces Interface Classification Comments ---------------- --------------- ---------------- SUNWPython Commited LSARC/2005/734 SUNWmysql-python Commited PSARC/2008/081 SUNWpysqlite Commited LSARC/2009/203 SUNWpython-setuptools Commited LSARC/2008/207 4. Resources and Schedule: ----------------------- 4.1 Product Approval Committee requested information : 4.1.1 Consolidation or Prject Name :SFW / SUNWsqlalchemy 4.1.2 Type of CPT Review and Approval expected : FastTrack 4.1.3 ARC review type : FastTrack 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: SFW 6.5. ARC review type: FastTrack 6.6. ARC Exposure: open