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 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 
>
>
>

-- 



Reply via email to