我正在尝试使用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)
答案 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 页面
希望这会有所帮助!!