gpt4 book ai didi

python - Bottle Cork 创建了一个用户,但没有将其保存到数据库中

转载 作者:行者123 更新时间:2023-12-01 05:08:01 25 4
gpt4 key购买 nike

我正在使用 Bottle Cork 通过 SQLite 后端进行身份验证,并尝试创建一个用户:

@bottle.post('/ajax/users/create/')
def create_user():
response.content_type = 'application/json'
password = bottle.request.forms.get('password')
username = bottle.request.forms.get('username')
role = bottle.request.forms.get('role')
ret = create_user_by_admin(username, password, role)
response.content_type = 'application/json'
return dumps({"status": ret.get('ok')})

def create_user_by_admin(username, password, role):
try:
auth.create_user(username, role, password)
return dict(ok=True, msg='')
except Exception, e:
return dict(ok=False, msg=e.message)

Bottle 应用程序日志:

127.0.0.1 - - [13/Jul/2014 13:56:38] "POST /ajax/users/create/ HTTP/1.1" 200 16

jQuery 发布响应:{"status": true}

如果我第一次创建用户,响应为 True(用户已成功创建),但数据库中没有新用户。下一个响应将返回 False 和错误消息:

127.0.0.1 - - [13/Jul/2014 13:56:38] "POST /ajax/users/create/ HTTP/1.1" 200 16
/home/art/projects/leggera/app/views.py:33: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
return dict(ok=False, msg=e.message)

这意味着,创建了一个用户,但是...数据库中仍然没有新用户(我正在使用 SQLiteMan 查看数据库的内容)!
数据库未锁定,chmod +rwx...我该如何解决此问题?

最佳答案

后端实现永远不会提交事务。

科克问题跟踪器中有两个问题显示了人们如何解决此问题:

  • Issue 66是一个拉取请求,用于更新示例以添加 backend.connection.commit() 调用:

    auth.create_user(username, role, password)
    auth._store.connection.commit()
  • Issue 63关于 SQLite 后端的线程问题;但包含的代码使用后端的子类来设置隔离级别以强制自动提交。

请注意,第 63 期显示后端完全不适合多线程环境;我会使用 SQLAlchemy 后端,因为它可以正确处理 SQLite 和线程。

快速粗略地浏览一下该后端也会发现它看起来也不处理提交。

关于python - Bottle Cork 创建了一个用户,但没有将其保存到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24721528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com