web2py - 选择数据库
web2py - Choose DB
我有两个具有相同表的数据库(Oracle 和 MSSQL)。登录应用程序时可以选择其中一个数据库。
view.html
<form action="{{=URL('test?dbs=')}}">
<label for="dbs">Choose a DB:</label>
<select name="dbs">
<option value="oracle">Oracle</option>
<option value="mssql">MSSQL</option>
</select>
<input type="submit" value="Submit">
</form>
{{=db_choose}}
controller.py
def test():
db_choose = request.vars.dbs
if db_choose == "oracle":
db = DAL('oracle://username/password@test')
return dict(db_choose = db)
elif db_choose == "mssql":
db = DAL('mssql://username:password@localhost/test')
return dict(db_choose = db_choose)
else:
return dict(db_choose = db_choose)
return dict(db_choose = db_choose)
您需要在请求之间保留选择,因此可以将选择存储在会话中。
在模型文件中(例如,db.py):
db = DAL('oracle://username/password@test' if session.db == 'oracle' \
else 'mssql://username:password@localhost/test')
在控制器中:
def test():
session.db = request.vars.dbs or 'mssql'
return dict(db_choose = session.db)
如果您希望选择在单个会话之后持续存在,请考虑将每个用户的选择存储在他们的 auth_user
记录中(如果有登录),或者将其存储在浏览器中的 localStorage
中.
我有两个具有相同表的数据库(Oracle 和 MSSQL)。登录应用程序时可以选择其中一个数据库。
view.html
<form action="{{=URL('test?dbs=')}}">
<label for="dbs">Choose a DB:</label>
<select name="dbs">
<option value="oracle">Oracle</option>
<option value="mssql">MSSQL</option>
</select>
<input type="submit" value="Submit">
</form>
{{=db_choose}}
controller.py
def test():
db_choose = request.vars.dbs
if db_choose == "oracle":
db = DAL('oracle://username/password@test')
return dict(db_choose = db)
elif db_choose == "mssql":
db = DAL('mssql://username:password@localhost/test')
return dict(db_choose = db_choose)
else:
return dict(db_choose = db_choose)
return dict(db_choose = db_choose)
您需要在请求之间保留选择,因此可以将选择存储在会话中。
在模型文件中(例如,db.py):
db = DAL('oracle://username/password@test' if session.db == 'oracle' \
else 'mssql://username:password@localhost/test')
在控制器中:
def test():
session.db = request.vars.dbs or 'mssql'
return dict(db_choose = session.db)
如果您希望选择在单个会话之后持续存在,请考虑将每个用户的选择存储在他们的 auth_user
记录中(如果有登录),或者将其存储在浏览器中的 localStorage
中.