Commits

Mike Bayer committed e96fa9f

props to ben

Comments (0)

Files changed (5)

handout.pdf

Binary file modified.

handout/_sources/front.txt

 Presenters / Credits
 =====================
 
-`Michael Bayer <http://techspot.zzzeek.org>`_ is a NYC-based software contractor with a decade of
+Michael Bayer (http://techspot.zzzeek.org) is a NYC-based software contractor with a decade of
 experience dealing with relational databases of all shapes and sizes.
 After writing many homegrown database abstraction layers in such
 languages as C, Java and Perl, and finally after several years of
 deserves to be.
 
 Parts of this handout, as well as the core of the "Slide Presenter"
-tool, were written by `Jason Kirtland <http://discorporate.us/jek/>`_,
-who has been a key contributor
-to the SQLAlchemy project for many years.
+tool, were written by Jason Kirtland (http://discorporate.us/jek/)
+who has been a key contributor to the SQLAlchemy project for many years.
+
+Big thanks to Ben Trofatter for help editing / proofreading this document.

handout/front.html

 </div>
 <div class="section" id="presenters-credits">
 <h2>Presenters / Credits<a class="headerlink" href="#presenters-credits" title="Permalink to this headline">¶</a></h2>
-<p><a class="reference external" href="http://techspot.zzzeek.org">Michael Bayer</a> is a NYC-based software contractor with a decade of
+<p>Michael Bayer (<a class="reference external" href="http://techspot.zzzeek.org">http://techspot.zzzeek.org</a>) is a NYC-based software contractor with a decade of
 experience dealing with relational databases of all shapes and sizes.
 After writing many homegrown database abstraction layers in such
 languages as C, Java and Perl, and finally after several years of
 helping to make Python the universally popular programming platform it
 deserves to be.</p>
 <p>Parts of this handout, as well as the core of the &#8220;Slide Presenter&#8221;
-tool, were written by <a class="reference external" href="http://discorporate.us/jek/">Jason Kirtland</a>,
-who has been a key contributor
-to the SQLAlchemy project for many years.</p>
+tool, were written by Jason Kirtland (<a class="reference external" href="http://discorporate.us/jek/">http://discorporate.us/jek/</a>)
+who has been a key contributor to the SQLAlchemy project for many years.</p>
+<p>Big thanks to Ben Trofatter for help editing / proofreading this document.</p>
 </div>
 </div>
 

handout/searchindex.js

-Search.setIndex({objects:{},terms:{osx:2,all:[1,3,4],concept:[1,3,4],jason:[3,5],consider:4,illustr:[1,4,2],queri:[1,0,4],global:[1,4],codd:[1,4],four:[1,4],defining_unique_kei:1,scalar:1,correl:[1,4],classic:[1,5],abil:4,placement:1,follow:[1,4],disk:4,ptr:5,row:[1,4],whose:[1,4],privat:4,middl:1,depend:[1,4,2],system:[1,3,2,4],advantag:1,pron:1,elsewher:4,send:3,cach:1,current_timestamp:1,program:[1,3,2],swap:1,sql92:5,sens:[1,4],project_id:1,introduc:[3,4],identitymap:1,emploi:4,sourc:[1,2],everi:[1,4],string:[1,4],area:[1,4],evaul:1,zipchk:1,rise:4,none:4,focus:4,util:4,data_manipulation_languag:1,candid:[1,4],volum:5,jack:[1,4],failur:[1,4],veri:[1,3,4],affect:4,implicitli:1,cartesian_product:1,tri:[1,4],usa:1,sql_join:1,level:[1,4],list:[1,0,4,5,3],signific:4,handout:[3,0,2],correct:[1,4],"try":[1,4],concurr:[1,4,5],refer:[1,4],ride:1,enterpris:5,data_definition_languag:1,user_account_id:1,user_account:1,core:[1,0,3],natur:[1,4],direct:1,sign:4,jump:4,second:[3,4],mysqldb:1,design:[1,4],aggreg:[1,4],pass:[1,4],download:[3,2],further:[3,0,2,5],acid:[1,0,4],append:1,even:[1,4],index:[1,4,2],what:[1,3,5,4],hide:4,sub:4,compar:1,consistency_:1,section:3,abl:[3,4],brief:4,mysql:[1,4],char_length:1,delet:[1,4],version:[1,3,2,4],primary_kei:1,succinct:1,"new":[1,4],net:1,method:1,metadata:1,ongo:[1,4],elimin:4,full:1,themselv:4,deriv:[1,4],dodg:1,gener:[1,3,4],never:[1,4],here:[1,3,2,4],restat:4,satisfi:4,procur:1,modif:[1,4],address:1,path:[1,3],along:[1,4],vertic:1,modifi:[1,4,5],implicit:1,valu:[1,4],leav:4,invis:1,condit:1,search:4,produc:[1,4],ahead:3,alchemist:4,unboundexecutionerror:1,prior:[3,2],base:[1,3,4],throughput:4,behav:1,within:[1,3,4],social:1,real:1,extrem:3,implement:[1,4,5],transact:[1,3,4],commonli:[1,4],theori:4,employe:[1,4],via:[1,2],depart:[1,4],propag:1,appli:[1,4],modul:1,prefer:2,seven:4,readili:1,vice:1,"boolean":1,calculu:1,visibl:[1,4],instal:[3,0,2],total:1,establish:[1,4],beginin:1,select:[1,4],highli:4,kei:[1,3,4],dorset:5,from:[1,4,2,5],proceed:[1,4],zip:2,memori:[1,4],distinct:[1,4],univers:3,two:[1,3,4],perl:3,sessionmak:1,msn:1,database_system:1,edward:4,overhead:[1,4],criteria:[1,4],scope:[1,4],type:[1,4],more:[1,3,4],flat:4,minim:[1,4,2],relax:1,peopl:4,hundr:4,claus:[1,4],yahoo:1,site:[3,0,2],visual:4,"transient":1,stick:1,particular:[1,4,2],known:[1,4],postgresql:[1,4],compani:4,role_nam:1,must:[1,4,2],accid:4,account:[1,3,5,4],join:[1,4],augment:1,hous:5,employeeproject:1,car:1,setup:[3,0,2],work:[1,3,2,4],uniqu:[1,4],dev:1,conceptu:1,remain:[1,4],itself:[1,3,2,5,4],obvious:4,can:[1,3,2,4],morgan:5,learn:[3,4],about:[1,4,5],purpos:[1,0,3],fetch:1,def:1,control:[1,4],claim:[4,5],sqlite:[1,4,2],traceback:1,give:4,process:[1,4,2],lock:4,atomicity_:1,nock:5,share:1,indic:[1,4],topic:[4,5],critic:5,minimum:2,want:[1,4],basebal:3,natural_kei:1,phrase:1,serial:[1,4],keep:[1,4],occur:[1,4],contribut:3,low:[1,4],alwai:[1,4],cours:4,multipl:[1,4],goal:3,divid:1,rather:[1,4],anoth:[1,4],get:[1,3,2,4],three:[1,4,5],environ:[1,0,2,3],nyt:1,write:[3,4],concis:1,lifecycl:1,criterion:4,recoveri:1,fourth:5,reject:4,nyc:3,negoti:1,simpl:[1,4],updat:[1,4,2],rollback:[1,4],map:1,product:1,resourc:5,overridden:1,huge:3,max:[1,4],clone:2,after:[1,3,4],variant:[1,4],database_transact:1,reflect:1,befor:[1,4],catalog:1,employee_id:1,mixin:1,commit:[1,4],mai:[1,3,2,4],end:[1,4],redund:1,philosophi:4,data:[1,0,5,4],becom:4,averag:4,period:1,attempt:[3,4],practic:[1,3,4],save:1,ani:[1,4,2,5],bind:1,valid:[1,4],secur:1,explicit:1,correspond:[1,4],descriptor:1,element:4,caus:1,inform:[1,4,2,5],scoped_sess:1,preced:[1,4],combin:[1,4],block:[1,4],allow:[1,3,4],my_us:1,mechan:5,first:[1,4],order:[1,4],talk:1,includ:[1,3,2,4],oper:[1,4],denot:1,composit:[1,4],help:[1,3,4],offici:4,move:1,becaus:[1,4],cross:[1,4],held:1,through:[1,3,2,4],classifi:1,unique_kei:1,still:4,paramet:1,conjunct:[1,4],group:[1,3,4],monitor:4,how:4,chosen:[1,4],psycopg2:1,fix:[1,4],acid_model:1,kirtland:[3,5],surrogate_kei:1,late:4,platform:3,window:2,pend:1,gem:5,creat:[1,4,2],persist:1,mail:[3,0],hidden:1,main:1,might:[1,4],alter:1,memoiz:1,them:[1,4],good:[3,4,5],"return":[1,4],candidate_kei:1,thei:[1,4,2],reveal:4,handl:1,promin:1,overal:3,initi:1,denorm:4,"break":4,promis:4,terminolog:1,instead:[1,4],front:[3,0],inspect:[1,4],detach:1,discuss:4,introduct:[1,0,4,3],term:[1,0,3],retriev:[1,4],name:[1,4],edit:5,correlat:1,instrumentedattribut:1,revert:4,instruct:4,mari:1,separ:[1,4],easili:[4,2],slide:[3,0,2],exampl:[1,4,2],isolation_:1,compris:[1,4],each:[1,4],fulli:[1,4],difficult:4,side:[1,4],mean:[1,4],subset:4,domain:5,citat:1,dialect:1,michael:3,individu:[1,4],began:4,idea:[1,3,4],predic:1,realli:4,contributor:3,linkag:1,fewer:4,begun:1,year:[3,4],distributor:1,our:4,simultan:1,event:1,special:[1,2],out:[1,4],variabl:1,expres:1,accomplish:4,attend:3,goe:4,algebra:[1,4],semi:1,primari:[1,4,5],categori:4,suitabl:1,rational:1,emp_id:[1,4],factori:1,empti:4,common:[1,4],proxi:1,insid:[1,4],advanc:1,systemwid:2,manipul:[1,0,4],situat:1,differ:[1,4],omiss:4,standard:[1,4,2,5],reason:4,orm:1,table_2:4,intric:4,dictionari:1,table_1:4,quicki:1,org:[1,3,2,5],relat:[1,0,4,3],pycon2013_student_packag:2,upon:[1,4],care:4,kaufmann:5,architectur:[1,5],thread:1,capabl:1,could:[1,4],omit:4,synchron:4,address_obj:1,unavoid:4,filter:4,thing:[1,4],length:1,enforc:4,place:[1,3,4],perman:[1,4],geometri:4,profess:5,confus:[1,4],assign:[1,4],pep:1,"__delete__":1,origin:[1,4],softwar:[3,4,5],major:[1,3],project_employe:1,walli:[1,4],onc:[1,4],independ:[1,4],uncorrel:1,number:[1,4],thereof:1,yourself:4,tier:1,artistri:4,alreadi:[1,3,4],done:4,least:[1,3,4],plainli:4,subqueri:[1,4],fantast:5,dep_nam:4,size:[1,3],datetim:1,avail:[1,3,2,5],given:[1,4],cartesian:1,smaller:[1,4],durability_:1,convent:[4,5],script:[1,2],associ:[1,4],top:1,creator:1,sometim:[1,4],construct:[1,4],attach:1,necessarili:[],master:[4,2],demonstr:2,statement:[1,4],toolset:3,scheme:4,"final":[3,4],store:[1,4],too:[3,4],consol:4,option:1,relationship:[1,4],tool:[3,4],copi:[3,4],specifi:[1,4],task:[1,3],part:[1,3,2],enclos:1,mostli:1,daunt:4,essenti:[1,3,2,4],exactli:[1,4,5],haven:1,serv:1,wide:[1,3,2,4],liter:1,target:[1,4],keyword:[1,4],provid:[1,4,5],gotten:4,remov:[1,4],zero:1,structur:[1,4,5],horizont:1,project:[1,3],matter:[3,0],boil:4,iron:1,were:[1,3,4],edgar_f:1,surrog:[1,4],seri:[1,4],analysi:5,rowset:1,fashion:1,comput:4,abov:[1,4],outcom:1,runner:[3,2],thereaft:1,modern:[1,4],mind:4,anywher:1,spent:[1,4],packag:[1,0,2,3],properli:4,expir:1,increment:[1,4],tabl:[1,4],need:[1,4,2,5],seen:1,seem:5,turn:[1,4],dogbert:4,well:[1,3,2,4],uncomplet:1,dbapi:1,issu:4,counter:1,decad:3,engin:[1,4],techniqu:[1,4,2],lib:1,min:[1,4],latter:4,violat:4,note:[1,4],also:[1,4,2],ideal:[1,4],maintain:1,take:[1,4],which:[1,3,2,4],ad_count:1,green:1,analogu:1,gmail:1,noth:1,channel:[3,0],wherebi:[1,4],blue:4,pipelin:4,unless:1,test:[1,3,4],normal:[1,4],track:1,who:[1,3,2,5,4],oracl:3,most:[1,3,2,4],detect:[1,4],portion:[1,3],pair:1,prentic:5,segment:2,"class":[1,3,2],prematur:1,simplic:4,allevi:1,synonym:[],exc:1,url:1,doc:[1,2],clear:1,later:4,cover:3,drive:4,doe:[1,4,2],declar:[1,4],snapshot:1,determin:[1,4],fowler:[1,5],dep_id_fk:1,incur:1,constrain:4,left:[1,4,2],cannot:1,fact:4,think:[4,5],somewhat:4,carefulli:4,wikipedia:[1,4,5],bring:1,directli:[1,2],session:1,particularli:4,faster:4,myclass:1,identifi:[1,4],rough:4,tend:[1,4],fine:2,line:[1,4],involv:1,current:[1,4],onli:[1,4],explicitli:1,locat:1,acquir:[1,4],hadn:4,explain:5,print:1,activ:1,state:[1,4],than:[1,4],configur:[1,4,2],latenc:1,dict:1,analyz:4,"__tablename__":1,local:[1,3,2,4],compoment:1,wilei:5,predict:4,nearli:1,variou:2,distinctli:[],familiar:[3,4,2],express:[1,4],stop:1,kind:[1,3,4],secondari:1,backend:1,repl:2,rest:1,report:4,requir:[1,4,2],layout:2,prime:4,mapper:1,homegrown:3,scene:4,enabl:[1,4],organ:[1,4],yield:4,email:[1,3],expedi:1,stuff:4,integr:4,mediat:1,contain:[1,4,2],demarc:[1,4],"01_engine_usag":2,where:[1,4,2],durabl:[1,4],wrote:3,view:[1,3,4],wiki:[1,5],set:[1,4],habit:4,proce:[1,4],knowledg:5,orphan:1,accord:[1,4],lot:[3,4],displai:4,resist:4,see:[1,4,2],temporarili:1,result:[1,4],respons:1,fail:[1,4],close:1,email_address:1,servic:1,best:[4,2],subject:4,closer:4,awar:4,statu:1,said:1,onto:[1,4],correctli:4,hopefulli:3,databas:[1,0,2,4,3],review:[3,0,4],enumer:1,below:[1,4],debat:4,behind:[1,4],celko:5,had:4,googlegroup:3,between:[1,4,2],call:[1,4,2],"import":[1,4],awai:4,experi:3,approach:1,across:4,attribut:[1,4],assumpt:4,user_obj:1,extend:1,web:[1,0,3],fundament:[1,4],style:[1,4,2],isol:[1,4],pypi:2,extens:[1,4],lazi:1,succeed:4,unitofwork:1,unit:[1,4],outer:[1,4],boss:4,come:4,embed:1,addit:[1,4],both:[1,4,5],toward:3,last:[1,4],expos:4,someth:[1,4],howev:[1,4,2],job:1,martinfowl:1,foreign:[1,4],etc:4,instanc:[1,4],context:1,logic:[1,4],pdf:2,corrupt:4,whole:[1,4],becam:1,load:[1,4],among:1,unclear:1,revers:[1,4],author:4,figur:4,instanti:1,overview:[0,4],format:2,inher:4,sai:1,strategi:5,written:[1,3,4],linux:2,mistak:4,largest:1,guid:1,sever:[3,2],pycon:0,duplic:[1,4],code:[1,4],better:4,ultim:[1,3],strong:4,java:[3,4],comma:1,eager:1,addition:[1,4],rebuild:2,"__set__":1,compos:[1,4],been:[1,3,5,4],sinc:[1,4],compon:1,accumul:[1,4],behvior:1,trigger:[1,4],treat:1,untouch:2,basic:[1,3,4],contractor:3,immedi:1,date:4,partial:1,quickli:4,box:4,exercis:3,summari:4,great:4,argument:[1,4],tiger:1,coordin:1,schema:[1,0,5,4],emp_count:4,togeth:[1,4],child:[1,4],"catch":3,repetit:4,repres:[1,3,4],former:4,present:[1,0,4,3],"case":[1,4],multi:[1,3,4],schmidt:5,look:[1,4],plain:1,straight:[1,4],properti:[1,4],histor:4,contextu:1,act:4,defin:[1,4],"while":[1,3,2,4],database_norm:1,behavior:[1,4],error:[1,4],glossari:[1,0,4,3],fixtur:4,observ:4,manner:1,earli:1,layer:3,zipcod:1,customiz:1,coher:1,helper:1,applic:[1,3,2,5,4],almost:4,formul:1,deliv:1,therefor:[1,4],non:[1,3,2,4],worri:4,equal:4,techspot:5,middlewar:1,archiv:3,edgar:[1,4],crash:1,avg:4,wherea:[1,4],mvcc:[1,4],"__init__":1,scienc:4,parent:[1,4],nullpool:1,"null":[1,4],develop:4,clearli:5,grant:4,perform:[1,4],impact:[1,4],make:[1,3,2,4],referenti:1,exchang:4,intermediari:[1,4],same:[1,3,4],member:[1,4],python:[1,3,2,4],add:[1,4],tutori:[1,3,2,4],auto:4,success:1,document:[1,0,2,4,3],complex:[1,4],conflict:4,higher:4,limit:1,assembl:[4,5],safe:[1,4],http:[1,3,2,5],nil:4,equival:1,referenc:[1,4],interrog:1,kju:1,driver:1,effect:[1,4],hand:[1,3,4],remot:4,my_sess:1,sliderepl:2,student:[3,4,2],mani:[1,3,5,4],extern:1,studi:4,recent:[1,4,2],lower:4,appropri:[1,4],off:[1,4],advic:5,discourag:1,com:[1,3],thu:1,facad:1,hypothet:4,without:[1,4],thought:5,client:1,command:1,get_bind:1,thi:[0,1,2,3,4,5],choos:4,emp_nam:[1,4],model:[1,0,5,4],ourselv:4,boundari:1,self:1,piec:4,usual:[1,4],protocol:1,entri:1,just:[1,4],less:[1,3,4],erron:1,sound:4,obtain:[1,0,2],tcp:1,risk:4,expung:1,shape:[3,4],venv:2,irc:[3,0],file:[1,2,5],heavili:[1,4],shorthand:1,outlin:4,yet:1,languag:[1,0,4,3],previous:[1,4],begin:1,hai:5,versu:2,now:[1,4,5],easi:2,field:[1,4],interfer:2,autom:1,point:[1,4],makefil:2,except:[1,4],param:1,hall:5,blog:5,instrument:1,employee_project:1,other:[1,3,2,4],versa:1,citizen:1,input:4,delv:5,subsequ:4,thows:[],latest:[3,2],match:[1,4],build:[1,0,2,4],bin:2,prerequistit:2,inspir:[1,5],varchar:[1,4],around:1,transpar:[1,4],read:[1,0,4,5,3],credit:[3,0,5],suppos:[1,4],arguabl:4,greatest:2,built:[1,4,2],leagu:3,grid:1,know:[1,4],elabor:1,world:[1,3],bit:5,characterist:1,color:1,formal:4,loss:1,ignor:1,specif:[1,4],lost:4,arbitrari:4,should:[1,3,4],anyon:5,manual:1,html:[1,2],integ:[1,4],server:[1,3],collect:1,princip:4,api:1,singl:[1,4],have:[1,4,2,5],cascad:[1,4],popular:3,output:[1,4],check_constraint:1,record:[1,4],nest:1,decis:4,stdin:1,underli:1,www:[1,3],drop:1,old:[4,2],often:[1,4],deal:[1,3,4],dilbert:[1,4],interact:[1,4,2],some:[1,3,4],back:[1,4],resolv:[1,4],intern:1,propos:1,unchang:[1,4],flush:1,proper:4,guarante:[1,4],successfulli:[3,4],rel:[1,4],librari:[1,2],registri:1,virtualenv:2,autoflush:1,txt:5,wendi:[1,4],scala:4,"function":[1,4],though:[1,4,2],definit:[1,4],pars:4,per:4,subscrib:3,harrington:5,mimick:4,mathemat:1,larg:[1,3],proj:1,ddl:[1,4],pattern:[1,2,5],foo:1,localhost:1,mode:4,machin:3,weslei:5,encourag:[4,2],object:[1,0,4,5,3],run:[1,3,2,4],complet:[1,3,4],power:1,quit:5,acronym:[1,4],word:1,ident:[1,4],usag:[1,2],nosql:4,interfac:1,uncommit:4,broken:[1,3,2,4],step:[1,3,2,4],isn:4,emp2:1,prerequisit:[3,0,2],emp1:1,standpoint:1,post:5,zzzeek:[2,5],relational_model:1,describ:[1,3,4],scenario:4,comparison:1,boldli:4,buildabl:[],actual:[1,3,4],would:[1,3,4],constraint:[1,4],column:[1,4],materi:3,commun:4,slightli:1,scott:1,page:4,degre:4,regular:[1,4],foreign_key_constraint:1,constructor:1,fals:1,discard:1,dep_id:[1,4],disabl:1,queuepool:1,own:[1,4],effici:1,consid:[1,4],rudiment:2,subq:1,curiou:1,datatyp:4,backref:1,pragmat:4,bound:1,automat:[1,4],due:4,down:4,hotli:4,pysqlit:2,right:[1,4],rdbmss:4,central:[1,4],ensur:[1,3,2,4],chang:[1,4],pgbouncer:1,next:4,storag:[1,4],your:2,smarti:5,manag:[1,4],git:2,fill:1,wai:[1,4],few:4,overus:1,execut:[1,4],support:2,iter:1,custom:[1,2],like:[1,4],start:[1,4,2],reli:4,much:[3,4],bayer:3,inner:1,rudimentari:1,replac:1,forward:4,typic:[1,4],strictli:4,deserv:3,entir:[1,3,4],lambda:1,lowest:[1,4],creation:[1,5],form:[1,4],offer:1,tupl:1,recommend:2,transat:[],continu:4,content:[0,2,4],sqlalchemi:[0,1,2,3,4,5],link:[1,4],gain:2,atom:[1,4],don:[1,4,2],overflow:1,highest:4,"true":[1,4],freenod:3,"__get__":1,count:[1,4],succe:4,made:[1,4],dirti:4,consist:[1,4],possibl:[1,4,2],whether:1,wish:1,access:[1,4,2,5],dml:[1,0,4],flip:4,lead:1,insert:[1,4],data_1:1,unusu:4,those:[1,3,2,4],unlik:4,lazyload:1,sum:4,otherwis:4,problem:1,deadlock:4,similar:[1,4],emit:[1,4],connect:1,serializ:4,classif:1,featur:[1,4,2],evalu:[1,4],addison:5,certain:1,"abstract":[1,3],threadloc:1,meaningless:4,doesn:[1,4],sale:4,strongli:[4,2],chanc:4,plu:1,intro:1,exist:[1,4],either:1,request:1,encompass:4,face:4,check:[1,4],spend:[3,4],phantom:4,again:4,mutual:1,misunderstood:[1,4],against:[1,4],titl:5,user:1,when:[1,4],detail:[1,3,5],virtual:3,orient:5,"_codd":1,"default":[1,2],book:5,role:1,rdbm:[1,4],rememb:4,varieti:[1,4],hibern:1,tech:1,you:[1,4],roll:4,eaacatalog:1,realiti:1,autocommit:1,draw:4,repeat:[1,4],intend:1,wildcard:4,sprawl:5,profession:5,sequenc:1,foreignkei:1,improv:4,googl:3,meaning:4,scale:4,create_engin:1,sql:[1,3,5,4],throughout:[1,4],hat:4,peac:4,pool:1,network:[3,2,5],reduc:[1,4],bitbucket:2,receiv:[1,3,4],sphinx:2,longer:4,unload:1,directori:2,accept:4,reliabl:1,martin:1,multiversion_concurrency_control:1,rule:[1,4],reciev:1,depth:1,mass:1,invok:[1,4],time:[1,3,4],far:1},objtypes:{},titles:["PyCon 2013 - Introduction to SQLAlchemy","Glossary","Package Setup","Front Matter","Relational Database Review","Further Reading"],objnames:{},filenames:["index","glossary","setup","front","relational","reading"]})
+Search.setIndex({objects:{},terms:{osx:2,all:[1,3,4],concept:[1,3,4],jason:[3,5],consider:4,illustr:[1,4,2],queri:[1,0,4],global:[1,4],codd:[1,4],four:[1,4],defining_unique_kei:1,scalar:1,correl:[1,4],abil:4,follow:[1,4],disk:4,ptr:5,evalu:[1,4],row:[1,4],whose:[1,4],privat:4,middl:1,depend:[1,4,2],elsewher:4,specif:[1,4],send:3,cach:1,program:[1,3,2],swap:1,sql92:5,sens:[1,4],project_id:1,introduc:[3,4],identitymap:1,"case":[1,4],sourc:[1,2],everi:[1,4],string:[1,4],made:[1,4],area:[1,4],evaul:1,zipchk:1,rise:4,none:4,focus:4,util:4,data_manipulation_languag:1,candid:[1,4],volum:5,jack:[1,4],failur:[1,4],veri:[1,3,4],affect:4,implicitli:1,cartesian_product:1,tri:[1,4],sql_join:1,level:[1,4],list:[1,0,4,5,3],signific:4,handout:[3,0,2],factori:1,"try":[1,4],session:1,larg:[1,3],ride:1,proj:1,enterpris:5,data_definition_languag:1,user_account_id:1,user_account:1,weslei:5,natur:[1,4],direct:1,sign:4,jump:4,grant:4,second:[3,4],mysqldb:1,design:[1,4],aggreg:[1,4],pass:[1,4],download:[3,2],further:[3,0,2,5],acid:[1,0,4],append:1,even:[1,4],index:[1,4,2],what:[1,3,5,4],anywher:1,hide:4,sub:4,compar:1,consistency_:1,section:3,abl:[3,4],brief:4,char_length:1,delet:[1,4],version:[1,3,2,4],primary_kei:1,succinct:1,"new":[1,4],net:1,method:1,metadata:1,ongo:[1,4],elimin:4,full:1,themselv:4,deriv:[1,4],dodg:1,gener:[1,3,4],never:[1,4],here:[1,3,2,4],restat:4,satisfi:4,procur:1,modif:[1,4],address:1,path:[1,3],along:[1,4],vertic:1,modifi:[1,4,5],implicit:1,valu:[1,4],invis:1,condit:1,search:4,celko:5,ahead:3,database_norm:1,alchemist:4,reason:4,prior:[3,2],orm:1,throughput:4,behav:1,social:1,earli:1,extrem:3,implement:[1,4,5],explain:5,commonli:[1,4],intric:4,employe:[1,4],via:[1,2],depart:[1,4],drive:4,appli:[1,4],modul:1,prefer:2,layer:3,readili:1,"boolean":1,visibl:[1,4],instal:[3,0,2],total:1,establish:[1,4],beginin:1,select:[1,4],highli:4,kei:[1,3,4],discuss:4,pycon2013_student_packag:2,from:[1,4,2,5],proceed:[1,4],zip:2,memori:[1,4],distinct:[1,4],longer:4,univers:3,two:[1,3,4],perl:3,msn:1,database_system:1,edward:4,overhead:[1,4],criteria:[1,4],scope:[1,4],facad:1,type:[1,4],more:[1,3,4],flat:4,relax:1,peopl:4,hundr:4,claus:[1,4],yahoo:1,visual:4,"transient":1,stick:1,former:4,particular:[1,4,2],known:[1,4],postgresql:[1,4],compani:4,role_nam:1,must:[1,4,2],accid:4,account:[1,3,5,4],join:[1,4],sometim:[1,4],augment:1,hous:5,employeeproject:1,car:1,setup:[3,0,2],work:[1,3,2,4],uniqu:[1,4],dev:1,conceptu:1,remain:[1,4],archiv:3,obvious:4,can:[1,3,2,4],morgan:5,learn:[3,4],purpos:[1,0,3],fetch:1,def:1,appropri:[1,4],control:[1,4],claim:[4,5],sqlite:[1,4,2],omit:4,give:4,process:[1,4,2],lock:4,atomicity_:1,nock:5,share:1,indic:[1,4],topic:[4,5],critic:5,minimum:2,want:[1,4],basebal:3,natural_kei:1,phrase:1,serial:[1,4],unavoid:4,occur:[1,4],repl:2,nearli:1,low:[1,4],alwai:[1,4],cours:4,multipl:[1,4],goal:3,secur:1,rather:[1,4],anoth:[1,4],distinctli:[],environ:[1,0,2,3],classifi:1,write:[3,4],how:4,criterion:4,recoveri:1,fourth:5,reject:4,nyc:3,negoti:1,simpl:[1,4],updat:[1,4,2],rollback:[1,4],map:1,product:1,resourc:5,overridden:1,huge:3,max:[1,4],clone:2,after:[1,3,4],variant:[1,4],database_transact:1,reflect:1,befor:[1,4],catalog:1,employee_project:1,mixin:1,discard:1,mai:[1,3,2,4],end:[1,4],redund:1,philosophi:4,data:[1,0,5,4],averag:4,subsequ:4,attempt:[3,4],practic:[1,3,4],read:[1,0,4,5,3],bind:1,divid:1,explicit:1,correspond:[1,4],element:4,caus:1,inform:[1,4,2,5],scoped_sess:1,preced:[1,4],combin:[1,4],queuepool:1,allow:[1,3,4],my_us:1,mechan:5,"__delete__":1,order:[1,4],talk:1,includ:[1,3,2,4],origin:[1,4],depth:1,composit:[1,4],help:[1,3,4],offici:4,move:1,becaus:[1,4],intermediari:[1,4],held:1,through:[1,3,2,4],nyt:1,unique_kei:1,still:4,paramet:1,conjunct:[1,4],group:[1,3,4],monitor:4,concis:1,chosen:[1,4],psycopg2:1,fix:[1,4],acid_model:1,kirtland:[3,5],surrogate_kei:1,late:4,platform:3,window:2,pend:1,transpar:[1,4],requir:[1,4,2],helper:1,persist:1,bin:2,mail:[3,0],hidden:1,main:1,might:[1,4],alter:1,memoiz:1,them:[1,4],good:[3,4,5],"return":[1,4],thei:[1,4,2],mapper:1,python:[1,3,2,4],promin:1,overal:3,initi:1,number:[1,4],"break":4,promis:4,automat:[1,4],instead:[1,4],front:[3,0],inspect:[1,4],detach:1,hall:5,introduct:[1,0,4,3],term:[1,0,3],makefil:2,name:[1,4],auto:4,instrumentedattribut:1,edit:[3,5],drop:1,revert:4,artistri:4,separ:[1,4],easili:[4,2],slide:[3,0,2],isolation_:1,compris:[1,4],each:[1,4],fulli:[1,4],higher:4,side:[1,4],mean:[1,4],subset:4,recommend:2,domain:5,outlin:4,citat:1,dialect:1,michael:3,individu:[1,4],idea:[1,3,4],realli:4,ensur:[1,3,2,4],linkag:1,been:[1,3,5,4],fewer:4,begun:1,year:[3,4],distributor:1,our:4,iter:1,thing:[1,4],event:1,special:[1,2],out:[1,4],variabl:1,accomplish:4,attend:3,goe:4,storag:[1,4],algebra:[1,4],dep_nam:4,categori:4,suitabl:1,rational:1,emp_id:[1,4],determin:[1,4],correct:[1,4],integr:4,proxi:1,insid:[1,4],advanc:1,systemwid:2,manipul:[1,0,4],situat:1,given:[1,4],omiss:4,standard:[1,4,2,5],unboundexecutionerror:1,base:[1,3,4],table_2:4,theori:4,dictionari:1,table_1:4,quicki:1,org:[1,3,2,5],dorset:5,limit:1,repeat:[1,4],care:4,kaufmann:5,thread:1,capabl:1,could:[1,4],traceback:1,synchron:4,address_obj:1,keep:[1,4],filter:4,turn:[1,4],length:1,enforc:4,place:[1,3,4],perman:[1,4],geometri:4,profess:5,confus:[1,4],assign:[1,4],first:[1,4],oper:[1,4],softwar:[3,4,5],major:[1,3],project_employe:1,onc:[1,4],independ:[1,4],uncorrel:1,denorm:4,thereof:1,yourself:4,tier:1,instruct:4,alreadi:[1,3,4],done:4,construct:[1,4],plainli:4,fantast:5,primari:[1,4,5],size:[1,3],datetim:1,avail:[1,3,2,5],differ:[1,4],cartesian:1,smaller:[1,4],convent:[4,5],script:[1,2],associ:[1,4],top:1,habit:4,system:[1,3,2,4],least:[1,3,4],attach:1,necessarili:[],master:[4,2],demonstr:2,statement:[1,4],toolset:3,scheme:4,"final":[3,4],store:[1,4],too:[3,4],back:[1,4],consol:4,option:1,relationship:[1,4],tool:[3,4],copi:[3,4],specifi:[1,4],get_bind:1,part:[1,3,2],enclos:1,mostli:1,daunt:4,essenti:[1,3,2,4],exactli:[1,4,5],haven:1,serv:1,wide:[1,3,2,4],liter:1,ben:3,target:[1,4],keyword:[1,4],unload:1,provid:[1,4,5],gotten:4,remov:[1,4],zero:1,structur:[1,4,5],horizont:1,project:[1,3],matter:[3,0],"__init__":1,boil:4,iron:1,were:[1,3,4],edgar_f:1,surrog:[1,4],html:[1,2],seri:[1,4],analysi:5,rowset:1,fashion:1,comput:4,behavior:[1,4],runner:[3,2],thereaft:1,modern:[1,4],mind:4,argument:[1,4],hypothet:4,packag:[1,0,2,3],properli:4,expir:1,increment:[1,4],tabl:[1,4],need:[1,4,2,5],seen:1,seem:5,predic:1,dogbert:4,uncomplet:1,dbapi:1,issu:4,counter:1,three:[1,4,5],engin:[1,4],techniqu:[1,4,2],lib:1,min:[1,4],latter:4,violat:4,client:1,note:[1,4],also:[1,4,2],ideal:[1,4],maintain:1,constructor:1,take:[1,4],which:[1,3,2,4],ad_count:1,green:1,analogu:1,subject:4,noth:1,channel:[3,0],wherebi:[1,4],blue:4,pipelin:4,unless:1,normal:[1,4],track:1,who:[1,3,2,5,4],oracl:3,most:[1,3,2,4],said:1,whether:1,portion:[1,3],advic:5,pair:1,prentic:5,segment:2,"class":[1,3,2],prematur:1,simplic:4,allevi:1,synonym:[],exc:1,url:1,doc:[1,2],clear:1,later:4,cover:3,sale:4,doe:[1,4,2],declar:[1,4],snapshot:1,wildcard:4,fowler:[1,5],dep_id_fk:1,incur:1,constrain:4,usual:[1,4],cannot:1,fact:4,think:[4,5],somewhat:4,carefulli:4,enumer:1,bring:1,directli:[1,2],concurr:[1,4,5],particularli:4,schmidt:5,myclass:1,protocol:1,rough:4,debat:4,fine:2,overflow:1,make:[1,3,2,4],involv:1,current:[1,4],onli:[1,4],explicitli:1,locat:1,acquir:[1,4],hadn:4,trigger:[1,4],transact:[1,3,4],print:1,activ:1,behind:[1,4],than:[1,4],configur:[1,4,2],latenc:1,dict:1,analyz:4,"__tablename__":1,local:[1,3,2,4],compoment:1,wilei:5,predict:4,contribut:3,variou:2,get:[1,3,2,4],familiar:[3,4,2],express:[1,4],stop:1,kind:[1,3,4],addison:5,secondari:1,expres:1,mimick:4,tcp:1,network:[3,2,5],report:4,gem:5,layout:2,prime:4,reveal:4,homegrown:3,scene:4,enabl:[1,4],organ:[1,4],yield:4,across:4,sum:4,expedi:1,stuff:4,common:[1,4],mediat:1,contain:[1,4,2],demarc:[1,4],"01_engine_usag":2,where:[1,4,2],wrote:3,view:[1,3,4],wiki:[1,5],smarti:5,set:[1,4],creator:1,proce:[1,4],duplic:[1,4],knowledg:5,orphan:1,assumpt:4,flip:4,resist:4,see:[1,4,2],temporarili:1,result:[1,4],respons:1,fail:[1,4],close:1,email_address:1,servic:1,best:[4,2],gmail:1,closer:4,awar:4,statu:1,detect:[1,4],onto:[1,4],correctli:4,hopefulli:3,databas:[1,0,2,4,3],review:[3,0,4],wikipedia:[1,4,5],data_1:1,tend:[1,4],state:[1,4],durability_:1,check_constraint:1,googlegroup:3,between:[1,4,2],call:[1,4,2],"import":[1,4],awai:4,experi:3,approach:1,email:[1,3],attribut:[1,4],accord:[1,4],user_obj:1,extend:1,hai:5,fundament:[1,4],style:[1,4,2],isol:[1,4],pypi:2,extens:[1,4],lazi:1,succeed:4,unitofwork:1,would:[1,3,4],outer:[1,4],boss:4,come:4,problem:1,regular:[1,4],thank:3,both:[1,4,5],proofread:3,last:[1,4],easi:2,someth:[1,4],howev:[1,4,2],rdbmss:4,job:1,martinfowl:1,foreign:[1,4],etc:4,instanc:[1,4],context:1,logic:[1,4],pdf:2,corrupt:4,whole:[1,4],trofatt:3,"default":[1,2],load:[1,4],among:1,unclear:1,author:4,mass:1,figur:4,instanti:1,overview:[0,4],suppos:[1,4],inher:4,period:1,subq:1,book:5,written:[1,3,4],non:[1,3,2,4],linux:2,mistak:4,guid:1,pycon:0,backend:1,code:[1,4],better:4,ultim:[1,3],becom:4,java:[3,4],comma:1,compos:[1,4],instrument:1,addition:[1,4],rebuild:2,"__set__":1,mari:1,calculu:1,sinc:[1,4],compon:1,accumul:[1,4],behvior:1,much:[3,4],treat:1,untouch:2,basic:[1,3,4],addit:[1,4],date:4,partial:1,quickli:4,box:4,versa:1,usag:[1,2],venv:2,summari:4,great:4,ani:[1,4,2,5],tiger:1,coordin:1,schema:[1,0,5,4],emp_count:4,togeth:[1,4],child:[1,4],"catch":3,repetit:4,repres:[1,3,4],driver:1,decad:3,present:[1,0,4,3],emploi:4,multi:[1,3,4],ident:[1,4],look:[1,4],heavili:[1,4],plain:1,straight:[1,4],properti:[1,4],histor:4,contextu:1,defin:[1,4],"while":[1,3,2,4],outcom:1,abov:[1,4],error:[1,4],glossari:[1,0,4,3],fixtur:4,correlat:1,observ:4,manner:1,propag:1,seven:4,zipcod:1,customiz:1,coher:1,advantag:1,prerequistit:2,almost:4,"null":[1,4],deliv:1,therefor:[1,4],site:[3,0,2],worri:4,equal:4,techspot:[3,5],middlewar:1,itself:[1,3,2,5,4],edgar:[1,4],crash:1,avg:4,wherea:[1,4],mvcc:[1,4],sever:[3,2],scienc:4,parent:[1,4],nullpool:1,employee_id:1,develop:4,realiti:1,minim:[1,4,2],perform:[1,4],impact:[1,4],began:4,referenti:1,exchang:4,cross:[1,4],same:[1,3,4],member:[1,4],walli:[1,4],tutori:[1,3,2,4],largest:1,success:1,document:[1,0,2,4,3],complex:[1,4],conflict:4,difficult:4,phantom:4,safe:[1,4],http:[1,3,2,5],nil:4,again:4,referenc:[1,4],interrog:1,kju:1,upon:[1,4],effect:[1,4],hand:[1,3,4],remot:4,my_sess:1,sliderepl:2,student:[3,4,2],mani:[1,3,5,4],extern:1,studi:4,recent:[1,4,2],lower:4,task:[1,3],off:[1,4],equival:1,discourag:1,com:[1,3],thu:1,well:[1,3,2,4],spent:[1,4],without:[1,4],thought:5,exampl:[1,4,2],command:1,greatest:2,thi:[0,1,2,3,4,5],choos:4,grid:1,model:[1,0,5,4],ourselv:4,boundari:1,spend:[3,4],piec:4,left:[1,4,2],identifi:[1,4],entri:1,just:[1,4],less:[1,3,4],erron:1,sound:4,deadlock:4,obtain:[1,0,2],rest:1,risk:4,expung:1,shape:[3,4],current_timestamp:1,irc:[3,0],file:[1,2,5],mysql:[1,4],shorthand:1,simultan:1,yet:1,languag:[1,0,4,3],previous:[1,4],far:1,web:[1,0,3],versu:2,now:[1,4,5],expos:4,interfer:2,autom:1,point:[1,4],had:4,except:[1,4],param:1,contractor:3,blog:5,eager:1,add:[1,4],other:[1,3,2,4],exercis:3,citizen:1,input:4,delv:5,save:1,thows:[],latest:[3,2],match:[1,4],build:[1,0,2,4],real:1,applic:[1,3,2,5,4],inspir:[1,5],varchar:[1,4],around:1,format:2,handl:1,big:3,credit:[3,0,5],subqueri:[1,4],arguabl:4,hibern:1,built:[1,4,2],leagu:3,emp_nam:[1,4],know:[1,4],elabor:1,world:[1,3],bit:5,characterist:1,color:1,formal:4,loss:1,semi:1,lost:4,arbitrari:4,should:[1,3,4],anyon:5,manual:1,resolv:[1,4],integ:[1,4],server:[1,3],collect:1,princip:4,api:1,singl:[1,4],have:[1,4,2,5],martin:1,popular:3,output:[1,4],mode:4,record:[1,4],nest:1,decis:4,stdin:1,underli:1,www:[1,3],revers:[1,4],old:[4,2],often:[1,4],deal:[1,3,4],dilbert:[1,4],interact:[1,4,2],some:[1,3,4],begin:1,self:1,certain:1,intern:1,propos:1,unchang:[1,4],flush:1,proper:4,guarante:[1,4],successfulli:[3,4],rel:[1,4],librari:[1,2],autocommit:1,autoflush:1,txt:5,wendi:[1,4],scala:4,"function":[1,4],though:[1,4,2],definit:[1,4],pars:4,per:4,harrington:5,pron:1,mathemat:1,leav:4,unit:[1,4],backref:1,ddl:[1,4],pattern:[1,2,5],foo:1,localhost:1,refer:[1,4],machin:3,core:[1,0,3],encourag:[4,2],object:[1,0,4,5,3],run:[1,3,2,4],power:1,quit:5,acronym:[1,4],word:1,cascad:[1,4],complet:[1,3,4],nosql:4,interfac:1,uncommit:4,broken:[1,3,2,4],step:[1,3,2,4],isn:4,emp2:1,prerequisit:[3,0,2],emp1:1,standpoint:1,post:5,zzzeek:[3,2,5],don:[1,4,2],relational_model:1,describ:[1,3,4],scenario:4,comparison:1,about:[1,4,5],pep:1,central:[1,4],usa:1,constraint:[1,4],becam:1,materi:3,commun:4,slightli:1,scott:1,page:4,degre:4,lifecycl:1,foreign_key_constraint:1,act:4,fals:1,commit:[1,4],dep_id:[1,4],disabl:1,produc:[1,4],block:[1,4],own:[1,4],effici:1,rudiment:2,buildabl:[],rudimentari:1,curiou:1,datatyp:4,within:[1,3,4],pragmat:4,bound:1,terminolog:1,due:4,down:4,hotli:4,pysqlit:2,right:[1,4],empti:4,sessionmak:1,contributor:3,chang:[1,4],pgbouncer:1,next:4,create_engin:1,your:2,durabl:[1,4],manag:[1,4],git:2,wai:[1,4],few:4,overus:1,execut:[1,4],support:2,column:[1,4],custom:[1,2],like:[1,4],start:[1,4,2],reli:4,formul:1,bayer:3,inner:1,strong:4,replac:1,forward:4,typic:[1,4],strictli:4,entir:[1,3,4],lambda:1,lowest:[1,4],creation:[1,5],toward:3,form:[1,4],offer:1,tupl:1,subscrib:3,transat:[],continu:4,content:[0,2,4],sqlalchemi:[0,1,2,3,4,5],link:[1,4],gain:2,atom:[1,4],placement:1,line:[1,4],highest:4,"true":[1,4],freenod:3,"__get__":1,count:[1,4],succe:4,immedi:1,dirti:4,consist:[1,4],possibl:[1,4,2],clearli:5,wish:1,access:[1,4,2,5],dml:[1,0,4],displai:4,lead:1,insert:[1,4],below:[1,4],unusu:4,those:[1,3,2,4],unlik:4,lazyload:1,foreignkei:1,otherwis:4,embed:1,strategi:5,similar:[1,4],emit:[1,4],connect:1,serializ:4,boldli:4,classif:1,featur:[1,4,2],creat:[1,4,2],classic:[1,5],profession:5,retriev:[1,4],"abstract":[1,3],threadloc:1,meaningless:4,doesn:[1,4],descriptor:1,strongli:[4,2],chanc:4,plu:1,intro:1,exist:[1,4],either:1,request:1,encompass:4,face:4,check:[1,4],discorpor:3,fill:1,assembl:[4,5],denot:1,mutual:1,misunderstood:[1,4],against:[1,4],titl:5,user:1,when:[1,4],detail:[1,3,5],virtual:3,orient:5,"_codd":1,field:[1,4],valid:[1,4],role:1,rdbm:[1,4],rememb:4,varieti:[1,4],test:[1,3,4],tech:1,you:[1,4],roll:4,eaacatalog:1,architectur:[1,5],virtualenv:2,draw:4,relat:[1,0,4,3],intend:1,registri:1,jek:3,sprawl:5,actual:[1,3,4],sequenc:1,improv:4,googl:3,meaning:4,scale:4,consid:[1,4],sql:[1,3,5,4],throughout:[1,4],hat:4,peac:4,pool:1,deserv:3,reduc:[1,4],bitbucket:2,receiv:[1,3,4],sphinx:2,faster:4,vice:1,directori:2,accept:4,reliabl:1,lot:[3,4],multiversion_concurrency_control:1,rule:[1,4],reciev:1,candidate_kei:1,ignor:1,invok:[1,4],time:[1,3,4],sai:1},objtypes:{},titles:["PyCon 2013 - Introduction to SQLAlchemy","Glossary","Package Setup","Front Matter","Relational Database Review","Further Reading"],objnames:{},filenames:["index","glossary","setup","front","relational","reading"]})

handout/source/front.rst

 Presenters / Credits
 =====================
 
-`Michael Bayer <http://techspot.zzzeek.org>`_ is a NYC-based software contractor with a decade of
+Michael Bayer (http://techspot.zzzeek.org) is a NYC-based software contractor with a decade of
 experience dealing with relational databases of all shapes and sizes.
 After writing many homegrown database abstraction layers in such
 languages as C, Java and Perl, and finally after several years of
 deserves to be.
 
 Parts of this handout, as well as the core of the "Slide Presenter"
-tool, were written by `Jason Kirtland <http://discorporate.us/jek/>`_,
-who has been a key contributor
-to the SQLAlchemy project for many years.
+tool, were written by Jason Kirtland (http://discorporate.us/jek/)
+who has been a key contributor to the SQLAlchemy project for many years.
+
+Big thanks to Ben Trofatter for help editing / proofreading this document.