java oracle database user dsn_跨会话序列化数据库连接

我正在开发一个web应用程序,它需要使用最终用户提供的凭据登录到数据库;应用程序本身没有登录到数据库。在

问题是如何为每个用户会话创建一个连接。在

一种方法是:请求用户凭据

检查针对数据库后端的凭据是否有效

在会话级变量中存储凭据

这种方法的问题是,对于该会话的每个后续请求,您需要创建一个新的连接;这将很快耗尽到服务器的最大连接数。在

我正在将Flask与Oracle一起使用。在

在Flask中,有一个^{}对象,它存储请求范围内的对象。但是,此片段不起作用:app = Flask(__name__)

app.config.from_object(__name__)

def login_required(f):

@wraps(f)

def decorated_function(*args, **kwargs):

if g.db is None:

return redirect(url_for('login', next=request.url))

return f(*args, **kwargs)

return decorated_function

class LoginForm(Form):

username = TextField('Username', [validators.Length(min=4, max=25)])

password = PasswordField('Password', [validators.Required()])

@app.route('/app', methods=['GET','POST'])

@login_required

def index():

return 'Index'

@app.route('/', methods=['GET','POST'])

def login():

form = LoginForm(request.form)

if request.method == 'POST':

if form.validate():

try:

dsn = cx_Oracle.makedsn(app.config['DB_HOST'],

app.config['DB_PORT'], app.config['DB_SID'])

g.db = cx_Oracle.connect(form.username.data,

form.password.data, dsn)

except cx_Oracle.DatabaseError as e:

flash(unicode(e), 'error')

return render_template('login.html', form=form)

return redirect(url_for('index'))

else:

return render_template('login.html', form=form)

else:

return render_template('login.html', form=form)

AttributeError: '_RequestGlobals' object has no attribute 'db'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值