前提・実現したいこと
初心者です。Python学習講座PythonエンジニアによるPython3学習サイト
(https://www.python.ambitious-engineer.com )で勉強中です。
Flaskで作る簡易分析ツール 4分析処理を作成しました。
以下にアクセスしてタイトル・文字列を入れて送信ボタンをクリックするとエラーが発生せずに参照画面のmockに遷移すると成功だか、エラーが発生してしまう。
http://localhost:5000/create
発生している問題・エラーメッセージ
Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
該当のソースコード
Python
1import os 2from flask import Flask, redirect, url_for, render_template, g, request 3import sqlite3 4import models 5 6app = Flask(__name__) 7app.config.from_object(__name__) 8 9app.config.update(dict( 10 DATABASE=os.path.join(app.root_path, 'db.sqlite3'), 11 SECRET_KEY='foo-baa', 12)) 13 14 15# 以下、DB接続関連の関数 16def connect_db(): 17 """ データベス接続に接続します """ 18 con = sqlite3.connect(app.config['DATABASE']) 19 con.row_factory = sqlite3.Row 20 return con 21 22 23def get_db(): 24 """ connectionを取得します """ 25 if not hasattr(g, 'sqlite_db'): 26 g.sqlite_db = connect_db() 27 return g.sqlite_db 28 29 30@app.teardown_appcontext 31def close_db(error): 32 """ db接続をcloseします """ 33 if hasattr(g, 'sqlite_db'): 34 g.sqlite_db.close() 35 36 37# 以下、画面/機能毎の関数 38@app.route('/') 39def index(): 40 """ 一覧画面 """ 41 return render_template('index.html', results={}) 42 43 44@app.route('/create') 45def create(): 46 """ 新規作成画面 """ 47 return render_template('edit.html') 48 49 50@app.route('/analysis', methods=['POST']) 51def analysis(): 52 """ 分析実行処理 """ 53 title = request.form['title'] 54 data = request.form['data'] 55 img = models.create_scatter(data) 56 57 con = get_db 58 59 pk = models.insert(con, title, data, img) 60 return redirect(url_for('view', pk=pk)) 61 62 63@app.route('/delete/<pk>', methods=['POST']) 64def delete(pk): 65 """ 結果削除処理 """ 66 return redirect(url_for('index')) 67 68 69@app.route('/view/<pk>') 70def view(pk): 71 """ 結果参照処理 """ 72 return render_template('view.html', result={}) 73 74 75if __name__ == '__main__': 76 app.run() 77
エラーログ
[2020-07-13 14:10:36,851] ERROR in app: Exception on /analysis [POST] Traceback (most recent call last): File "/Users/opt/anaconda3/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app response = self.full_dispatch_request() File "/Users/opt/anaconda3/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request rv = self.handle_user_exception(e) File "/Users/opt/anaconda3/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception reraise(exc_type, exc_value, tb) File "/Users/opt/anaconda3/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise raise value File "/Users/opt/anaconda3/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request rv = self.dispatch_request() File "/Users/opt/anaconda3/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/Users/Desktop/flask_init_sample/run.py", line 59, in analysis pk = models.insert(con, title, data, img) File "/Users/Desktop/flask_init_sample/models.py", line 40, in insert cur = con.cursor() AttributeError: 'function' object has no attribute 'cursor'
AttributeErrorを解決するには、どこから手を付けたらいいのかわかりません。
教えていただけないでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/13 05:55