python - Flask 连接sqlite 提示 has no attribute 'cursor'

 我-是二毛控控控_ 发布于 2022-11-02 14:38

flask0.10.1 程序结构如下:
app
| static
|--style.css
| templates
|--show_entries.html
|--layout.html
|--login.html
| flaskr.py
| sqldb.db

flaskr.py:

#-*-code=utf-8-*-
import os
import sqlite3
from flask import Flask,request,session,g,redirect,url_for,abort,render_template,flash

app = Flask(__name__)

DATABASE='sqldb.db'
DEBUG=True
SECRET_KEY='8888'
USERNAME='admin'
PASSWORD='PWD'

app.config.from_object(__name__)

def get_db():
    if not hasattr(g,'sqlite_db'):
        g.sqlite_db = sqlite3.connect(app.config['DATABASE'])
        g.sqlite_db.text_factory = str
    return g.sqlite_db

@app.teardown_appcontext
def teardown_db(exception):
    if hasattr(g,'sqlite_db'):
        g.sqlite_db.close()

@app.route('/')
def show_entries():
    db=get_db()
    cur = db.cursor()
    cur.execute('select e.title,e.body,u.username from entries e left join users u on e.user_id=u.id');
    entries = cur.fetchall()
    return render_template('show_entries.html',entries=entries)

@app.route('/add/',methods=['POST'])
def add_entries():
    if not session.get('logged_in'):
        abort(401)
    db = get_db
    cur = db.cursor()
    cur.execute('insert into entries(title,body,user_id) values(?,?,?)',[request.form['title'],request.form['body'],session.get('userid')])
    db.commit()
    flash('New entries was successfully added.')
    return redirect(url_for('show_entries'))
……

在访问"/"时,不显示数据库中的内容,添加entries时,报错如题:
AttributeError: 'function' object has no attribute 'cursor'。指示到add_entries函数中 cur = db.cursor()处,
个人感觉,不显示数据是不是没有连接到数据库?添加数据此处报错就很奇怪,是路径设置不对么?我在交互shell中手工输入原生sql可以查询得到数据库中的数据,但通过程序不行。请指教

1 个回答
  • db = get_db 改成get_db()。

    2022-11-04 07:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有