🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1053閲覧

sqliteで作成したテーブルをflaskで読み込めません

a2606

総合スコア22

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/11/19 03:41

編集2019/11/19 03:43

前提・実現したいこと

flaskを使用して、SQLiteで登録してある「users」テーブルから
取り出したパラメータをページ上に表示したい。

「DB Browser for SQLite」で登録したテーブルや列が、
実際に反映されるようにしたい。

発生している問題・エラーメッセージ

「users」テーブルが存在しないと表示されてしまいます。

"C:\Users\パソコン名\Documents\フォルダ名\workspace\flask\app.py", line 12, in index c.execute(sql) sqlite3.OperationalError: no such table: users

※パソコン名とフォルダ名は隠しております

該当のソースコード

html

1<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>Document</title> 9</head> 10 11<body> 12 <p>名前:{{user_info[0]}}</p> 13 <p>年齢:{{user_info[1]}}</p> 14 <p>住所:{{user_info[2]}}</p> 15</body> 16 17</html>

python

1import sqlite3 2from flask import Flask, render_template 3 4app = Flask(__name__) 5@app.route("/") 6def index(): 7 # flasktest.dbに接続します 8 conn = sqlite3.connect("flasktest.db") 9 c = conn.cursor() 10 sql = "SELECT name, age, address FROM users WHERE id = 1;" 11 # sql文を実行 12 c.execute(sql) 13 # 取ってきた内容を変数に格納する 14 user_info = c.fetchone() 15 # データベースの接続終了 16 c.close() 17 return render_template("index.html", user_info=user_info) 18 19 20if __name__ == '__main__': 21 app.run(debug=True)

ファイル構造

flask/  ├ templates  │ └ index.html  ├ app.py  └ flasktest.db

試したこと

テーブルの作成および列の追加は「DB Browser for SQLite」を使用し、
「Write Changes」を使用して変更の保存をかけておりますが、

エラーメッセージによると、python(app.py)の12行目にて、
usersテーブルが存在しないとエラーが出ているので、
パソコン本体と「DB Browser for SQLite」の再起動を行い、
DBにテーブルと列が存在していることを確認しております。
また、何度かDBも作成し直しております。

イメージ説明

補足情報(FW/ツールのバージョンなど)

OS:Windows 10 home(1909)
DB Browser for SQLite:3.11.2
Flask:1.1.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2019/11/19 04:28

cd "C:\Users\パソコン名\Documents\フォルダ名\workspace\flask" python app.y と起動していますか?
a2606

2019/11/19 05:34

ご回答いただいたコマンドをコマンドプロンプトから実行すると、 正常にデータベースから取り出すことができ、原因に気付くことができました! 私はVSCode上で「"ターミナルでPythonファイルを実行"」を使用して起動していたのですが、 workspaceフォルダがカレントディレクトリになっていた為、cdコマンドでflaskフォルダに移動することで、VSCodeからもデータベースにアクセスすることができました。 この度はご回答ありがとうございました!
quickquip

2019/11/19 05:37

ぜひご自分で回答を書いて解決済みにしましょう!!
a2606

2019/11/19 06:13

只今、公開しました!
guest

回答1

0

自己解決

VSCodeの「ターミナルでPythonファイルを実行」を使用して、
「app.py」を実行していたのですが、ターミナルには下記のように、

PS C:\Users\パソコン名\Documents\フォルダ名\workspace> & C:/Users//AppData/Local/Programs/Python/Python38-32/python.exe   c:/Users/パソコン名/Documents/フォルダ名/workspace/flask/app.py

カレントディレクトリ > & python.exeの絶対パス app.pyの絶対パス
と実行されており、カレントディレクトリが「flask」フォルダになっておりませんでした。

また、sqlite3.connect()メソッドは、引数のデータベースが存在しない場合、
新規にデータベースを作成してしまう為、カレントディレクトリに空のデータベースが作成され、
そこに「users」テーブルがないというのが今回のエラーの原因でした。

投稿2019/11/19 06:11

a2606

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問