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