@Likit, I don't think there is any reason to abandon web2py. Maybe, you are on the right track learning web2py, but got sideways sometimes (as you mentioned about the issue of 'tables not created by DAL'). Like many others, I have found the online web2py book very neatly documented. My advise to you would be to follow the entire book from page 1 & 'do it yourself'.
If you feel something sticky, the community is very helpful. You will definitely find web2py very much self-contained yet powerful & flexible. I have tried turbogears & django before & found that web2py excels amongst them. -- Vineet On Jan 12, 1:06 pm, Marin Pranjić <[email protected]> wrote: > DAL reads information from app/databases. > > If you delete it's contents, but do not delete tables in database, you will > get error "table already exists". You can use > migrate=False,false_migrate=True to fix this. > > If you delete tables in database, but do not delete contents of > app/databases, you will get error "table does not exist". DAL thinks tables > are already there, because you kept app/databases files. > > DAL is cool and easy, read the DAL section of the web2py.com/book :) > > Marin > > > > > > > > On Thu, Jan 12, 2012 at 6:03 AM, Likit <[email protected]> wrote: > > I mean, why won't web2py create the tables through its famous DAL. > > > I have created the database directly in mysql. > > > On Jan 11, 8:44 pm, Likit <[email protected]> wrote: > > > I guess I like SQL better than frameworks. SQL is a query language for > > > DDL and DML that is well documented and completely explicitly. > > > Frameworks are opaque and invent a new syntax subject to ambiguities > > > of parens, square braces, curly braces, dotted names, sometimes > > > tablenames being implicit, sometimes fieldnames being implicit. Why? > > > > So, I have repeatedly tried to make a link table like the famous dogs > > > and owners tables in the Web2py book to no avail. > > > > Each time there is a problem I must do the following: > > > - drop the database from mysql > > > - stop apache > > > - stop mysql > > > - delete the web2py application via the filesystem > > > - restore the web2py application via the filesystem making sure that > > > the cache and session files have been deleted > > > - restart apache > > > - restart mysql > > > - create the empty database in mysql > > > - run the web2py application > > > > But, web2py's DAL fails to create the tables. Because the errors > > > appear to be in the framework itself, the diagnostics are completely > > > opaque through several layers of calls. The ultimate error is that one > > > of the tables is not being created. But, that is circular--that is > > > because the DAL failed to create the table for a brand new web2py > > > application in an empty database. > > > > Judging from the references below it is because of a faulty > > > migration. it's not like the most trivial migrations EVER work. it > > > appears that some detritus of the previous application or tables > > > exists so that web2py attempts its failed magic by doing a migration. > > > > So, perhaps the real question is how does one purge every possible > > > vestige of both the tables and application so that web2py does not try > > > any of its so-called magic (which is supposed to be very unpythonic, > > > in any case). > > > > I've wasted nearly 60 hours on web2py and am about to stop wasting any > > > more time. There seem to be many reasons that php, jquery, and RonR > > > have dusted python for web development. > > > > Here is the traceback: > > > > TRACEBACK > > > > Traceback (most recent call last): > > > File "C:\web2py\gluon\restricted.py", line 204, in restricted > > > exec ccode in environment > > > File "C:/web2py/applications/pyjokes/models/db.py", line 55, in > > > <module> > > > Field('category_id', 'integer')) > > > File "C:\web2py\gluon\dal.py", line 5097, in define_table > > > polymodel=polymodel) > > > File "C:\web2py\gluon\dal.py", line 728, in create_table > > > fake_migrate=fake_migrate) > > > File "C:\web2py\gluon\dal.py", line 816, in migrate_table > > > self.execute(sub_query) > > > File "C:\web2py\gluon\dal.py", line 1359, in execute > > > return self.log_execute(*a, **b) > > > File "C:\web2py\gluon\dal.py", line 1353, in log_execute > > > ret = self.cursor.execute(*a, **b) > > > File "C:\web2py\gluon\contrib\pymysql\cursors.py", line 108, in > > > execute > > > self.errorhandler(self, exc, value) > > > File "C:\web2py\gluon\contrib\pymysql\connections.py", line 184, in > > > defaulterrorhandler > > > raise errorclass, errorvalue > > > ProgrammingError: (1146, u"Table 'jodb.joke_category' doesn't exist")

