sqlite3数据库被锁定(使用瓶子)

时间:2018-02-20 14:08:06

标签: python sqlite bottle

我正在尝试使用sqlite3在python中使用Bottle框架。然后我做了一个Todo List应用程序,但是当我第一次尝试发布数据时,错误发生的方式与上面不同。第二次'数据库被锁定'发生了。

有人可以帮忙吗?

#_*_ coding:utf-8- _*_

import os, sqlite3
from bottle import route, run, get, post, request, template

#sqlite from here----------------
dbname = "todo.db"
connection = sqlite3.connect(dbname)
dbcontrol = connection.cursor()

#Making table from here--------------------

create_table = '''create table todo_list (todo text)'''

@route("/")
def index():
    todo_list = get_todo()
    return template("index", todo_list=todo_list)

我想我需要更具体的代码。

@route("/enter", method=["POST"])
 def enter():
 conn = sqlite3.connect("todo.db")
 todo=request.POST.getunicode("todo_list")
 save_todo(todo)
 return redirect("/")




def save_todo(todo):
 connection = sqlite3.connect('todo.db')
 dbcontrol = connection.cursor()
 insert="insert into todo_list(todo) values('{0}')".format(todo)
 dbcontrol.execute(insert)
 connection.commit()

def get_todo():
 connection=sqlite3.connect('todo.db')
 dbcontrol = connection.cursor()
 select = "select * from todo_list"
 dbcontrol.execute(select)
 row = dbcontrol.fetchall()
 return row

run(host="localhost", port=8080, debug=True)

1 个答案:

答案 0 :(得分:0)

您可以查看link

使用以下命令之一安装软件包

$ pip install bottle-sqlite
$ easy_install bottle-sqlite

插件的一个例子

import bottle

app = bottle.Bottle()
plugin = bottle.ext.sqlite.Plugin(dbfile='/tmp/test.db')
app.install(plugin)

@app.route('/show/:item')
def show(item, db):
    row = db.execute('SELECT * from items where name=?', item).fetchone()
    if row:
        return template('showitem', page=row)
    return HTTPError(404, "Page not found")

插件的重要说明

  

不期望db关键字参数的路由不受影响。

     

配置连接句柄,以便sqlite3.Row对象可以   通过索引(如元组)访问和按名称不区分大小写。   在请求周期结束时,未完成的交易是   已提交,连接自动关闭。如果有错误   发生,自上次提交以来对数据库的任何更改都将被滚动   返回以使数据库保持一致状态。

不要忘记结帐 CONFIGURATION 页面

希望这会有所帮助!!