Introduction
web2py is a free, open-source web framework for Agile development that implies database-driven web apps; web2py is written and programmable in Python. web2py is a framework for full-stack; it comprises all the components a developer requires to build a fully functional web application.

web2py follows MVC (Model-View-Controller) pattern for running web applications. The model here is part of the application, which includes the logic of the data, the view here is a part of the application that helps render the data display to end-users, and the controller here is a part of the application that handles user interaction.
Keywords
As with any other frameworks out there, web2py also has keywords known as reserved keywords. A keyword is known as “check_reserved” tells the constructor to check table and column names against reserved SQL keywords in target backend databases. Check-reserved keyword is by default None. This is a list of strings that store the DB backend adapter names.
The adapter name is similar to the one used in the DAL connection string. So if we want to check against PostgreSQL and MSSQL, then our connection string would look as shown below:
db = DAL('sqlite://storage.sqlite', check_reserved=['postgres', 'mssql'])

Now, The DAL will scan the keywords in the same order as the list. There are two more options for us “all” and “common.” If we describe all, it will check against all known SQL keywords. If we describe common, it will only check against basic SQL keywords such as INSERT, SELECT, UPDATE, etc. We have to specify for supported backends if we would also like to check against the nonreserved SQL keywords. In that case, we would add the “_nonreserved” keyword to the name.
check_reserved=['postgres', 'postgres_nonreserved']
Below mentioned database backends support reserved word checking.
- PostgreSQL = postgres(_nonreserved)
- MySQL = mysql
- FIreBird = firebird(_nonreserved)
- MSSQL = mssql
- Oracle = oracle






