190 likes | 339 Views
Dynamic Web Programming: python pg and cgi modules. Mansi M. Kasliwal Carnegie Institution for Science California Institute of Technology. Database. L ogical t ables to organize large amounts of data Easy-to-manage: add/subtract/modify
E N D
Dynamic Web Programming:python pg and cgi modules Mansi M. Kasliwal Carnegie Institution for Science California Institute of Technology
Database • Logical tables to organize large amounts of data • Easy-to-manage: add/subtract/modify • Structure facilitating super-fast complex queries • Python “pg” module • connect • query, insert, delete, update (Note: psycopg2 module for cursor handling in large databases, copy command etc.)
An Example Database Schema createdb tutorial psql –d tutorial CREATE SEQUENCE people_id_seq; CREATE TABLE people ( id bigint NOT NULL default nextval(‘people_id_seq’), firstname text, lastname text ); CREATE TABLE education ( people_idbigint, subject text, degree text, college text, year int);
Example pg commands import pg #Connect to Database db = pg.connect(dbname=‘tutorial’, host=‘localhost’, user=‘mmk’) #Add Entries db.insert(people, [firstname=‘mansi’, lastname=‘kasliwal’]) delete(table, [d,] [key = val, ...]) update(table, [d,] [key = val, ...]) #Example Query Joining Two Tables result = db.query(“SELECT * from people, education WHERE people.id = education.people_id AND subject=‘astronomy’;”)
Dynamic Web Programming • Generate nimble webpages on-the-fly that push and pull data to and fro a database • Python “cgi” module is easy-to-use • URL: GET method • e.g. tutorial.cgi?firstname=‘mansi’&lastname=‘kasliwal’ • FORM: POST method • Radio buttons or check boxes • Drop down menu • File upload/download • Blank Text Area • Retrieving cookies • e.g. os.environ['REMOTE_USER'] (Note: wsgi is more portable than cgi since it unifies the application programming interface; wsgi = Web Server Gateway Interface)
Example Form #!/usr/bin/python # Import modules for CGI handling import cgi, cgitb # Create instance of FieldStorage form =cgi.FieldStorage() # Put up a form <form action="/cgi-bin/tutorial.cgi" method="post"> First Name: <input type="text" name="firstname"> <br /> Last Name: <input type="text" name="lastname" /> <input type="submit" value="Submit" /> </form> # Get data from fields first_name = form.getvalue('firstname') last_name = form.getvalue('lastname') #Insert entry into database db.insert(people, [firstname=‘%s’, lastname=‘%s’] %(first_name, last_name))
Check box / Dropdown Menu <form action="/cgi-bin/checkbox.cgi" method="POST" target="_blank"> <input type="checkbox" name="maths" value="on" /> Maths <input type="checkbox" name="physics" value="on" /> Physics <input type="submit" value="Select Subject" /> </form> <form action="/cgi-bin/dropdown.cgi" method="post" target="_blank"> <select name="dropdown"> <option value="Maths" selected>Maths</option> <option value="Physics">Physics</option> </select> <input type="submit" value="Submit"/> </form>
Applications in Time Domain • A Treasures Portal • Follow-up Marshals • Extragalactic Transients • Milky Way Variables • Solar System • Target-of-opportunity
iPTF Treasures Portal Developers: MMK, Yi Cao
The iPTF Treasure Chest A versatile portal with query derivatives: ROBOTIC treasurer SYSTEMATIC daily monitoring YOUNG supernovae GAP transients in the local universe SLOWLY rising supernovae LARGE amplitude stars Fermi/Icecube target of opportunity fields triggers M31/M33 transients and variables FAST Transients NUCLEAR Transients Developers: MMK, Yi Cao, IairArcavi
Light Curves: Key to Variable Stars Developers: David Levitan
Automatically match with SDSS, WISE, SimbadLinks to NED, CRTS, LINEAR, etc. Periods
Movement: Key to Asteroids Developer: Adam Waszczak
Target-of-Opportunity Marshal Developer: Leo Singer