Latest trunk has a little script to help you create a model file from a legacy sqlite3 database. You will have to fine tune some table definition, but it should help.
Then you should be able to access your db through the DAL. Note that triggers side effects, if there are any, must be taken into account since DAL does not handle any of that. mic 2012/11/8 Maurice Ling <[email protected]> > OK - I found a solution or hack. > > 1. put my sqlite database into applications/<app_name>/database folder > > 2. add this into applications/<app_name>/model/db.py > nat = DAL('sqlite://nat_full.db', migrate=False) > > 3. use "result = nat.executesql(stmt)" whenever I want to run my queries > > Anyone can comment if this is an appropriate solution>? > > > > On Thursday, 8 November 2012 13:37:15 UTC-6, Maurice Ling wrote: >> >> Hi everyone >> >> Let's say I have a database that I want to fit a web application to. >> There are a lot of views and triggers in the database, so I do not consider >> porting as a viable option. How do I go about doing this? >> >> My steps are as follow: >> 1. create an "init" application >> 2. put my database into application/init/controller folder >> 3. I have the following as controller/default.py >> >> import sqlite3 as s >> >> con = s.connect('nat_full.db') >> cur = con.cursor() >> >> def get_average_microarray(): >> form = FORM( >> TABLE( >> TR('Organism: ', >> SELECT('Human', 'Mouse', 'Rat', _name='organism')), >> TR('Level: ', >> SELECT('Gene', 'Exon', _name='level')), >> TR('Type: ', >> SELECT('Sense', 'Antisense', _name='type')), >> INPUT(_type='submit', _value='SUBMIT'))) >> if form.accepts(request.vars,**session): >> session.organism = str(form.vars.organism) >> session.level = str(form.vars.level) >> session.type = str(form.vars.type) >> redirect(URL(r=request, f='show_average_microarray')) >> return dict(form=form) >> >> def show_average_microarray(): >> tablename = '' >> if session.level == 'Gene' and session.type == 'Sense': >> tablename = 'sense_gene_core_table' >> elif session.level == 'Gene' and session.type == 'Antiense': >> tablename = 'antisense_gene_core_table' >> elif session.level == 'Exon' and session.type == 'Sense': >> tablename = 'sense_exon_core_table' >> elif session.level == 'Exon' and session.type == 'Antiense': >> tablename = 'antisense_exon_core_table' >> stmt = 'select * from ' + tablename >> cur.execute(stmt) >> result = cur.fetchall() >> return dict(result=result) >> >> 4. >> http://localhost:8000/init/**default/get_average_microarray<http://localhost:8000/init/default/get_average_microarray>shows >> the primitive form (which is alright) but it gives me an error when I >> submit the form. >> >> Traceback (most recent call last): >> File "C:\Users\Maurice.Ling\**Desktop\nat_web\gluon\**restricted.py", line >> 212, in restricted >> exec ccode in environment >> File >> "C:/Users/Maurice.Ling/**Desktop/nat_web/applications/**init/controllers/default.py" >> <http://localhost:8000/admin/default/edit/init/controllers/default.py>, >> line 48, in <module> >> File "C:\Users\Maurice.Ling\**Desktop\nat_web\gluon\globals.**py", line >> 188, in <lambda> >> self._caller = lambda f: f() >> File >> "C:/Users/Maurice.Ling/**Desktop/nat_web/applications/**init/controllers/default.py" >> <http://localhost:8000/admin/default/edit/init/controllers/default.py>, >> line 45, in show_average_microarray >> cur.execute(stmt) >> OperationalError: no such table: sense_gene_core_table >> >> Is there any solution? >> >> Thanks in advance >> >> Maurice >> >> >> -- > > > > --

