質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
SQLite

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

Python

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

Q&A

解決済

1回答

962閲覧

python sqlite 家計簿アプリを作成する際に、データベース周りがうまくいかない。

suesyun

総合スコア13

SQLite

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

Python

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

0グッド

0クリップ

投稿2017/12/02 05:26

編集2017/12/02 06:31

こちらのサイトのコードを利用し、一旦同じもの作成しようとしているのですが、

http://memopy.hatenadiary.jp/entry/2017/05/30/223555

エラーにより登録できませんでしたしか出ず、登録が出来ません。

可能性としてはなにが考えられるでしょうか?
データベース周りがおかしいが自分自身では感じております。

python初心者で苦労しております。

エラー内容としては、

try: c.execute(""" INSERT INTO acc_data(acc_date,item_code,amount) VALUES('{}',{},{}); """.format(acc_date,item_code,amount)) c.execute("COMMIT;") print("1件登録しました") # ドメインエラーなどにより登録できなかった場合のエラー処理 except: print("エラーにより登録できませんでした")

「登録しました。」と出てこないことです。
入力方法がおかしいorドメインエラーなどが起こっているのでしょうか?

# -*- coding: utf-8 -*- import tkinter as tk import sqlite3 # 空のデータベースを作成して接続する dbname = "database.db" c = sqlite3.connect(dbname) c.execute("PRAGMA foreign_keys = 1") # 既にデータベースが登録されている場合は、ddlの発行でエラーが出るのでexceptブロックで回避する try: # itemテーブルの定義 ddt = """ CREATE TABLE item ( item_code INTEGER PRIMARY KEY AUTOINCREMENT, item_name TEXT NOT NULL UNIQUE ); """ # SQLの発行 c.execute(ddt) # acc_dataテーブルの定義 ddt = """ CREATE TABLE acc_data ( id INTEGER PRIMARY KEY AUTOINCREMENT, acc_date DATE NOT NULL, item_code INTEGER NOT NULL, amount INTEGER, FOREIGN KEY(item_code) REFERENCES item(item_code) ); """ # itemテーブルへリファレンスデータの登録 c.execute(ddt) c.execute("INSERT INTO item(item_name) VALUES('食費');") c.execute("INSERT INTO item(item_name) VALUES('住宅費');") c.execute("INSERT INTO item(item_name) VALUES('光熱費');") c.execute("COMMIT;") except: pass # 登録ボタンがクリックされた時にデータをDBに登録するコールバック関数 def create_sql(): # 日付の読み取り acc_data = entry1.get() # 内訳の読み取り item_code = entry2.get() # 金額の読み取り amount = entry3.get() # SQLを発行してDBへ登録 try: c.execute(""" INSERT INTO acc_data(acc_date,item_code,amount) VALUES('{}',{},{}); """.format(acc_date,item_code,amount)) c.execute("COMMIT;") print("1件登録しました") # ドメインエラーなどにより登録できなかった場合のエラー処理 except: print("エラーにより登録できませんでした") # rootフレームの設定 root = tk.Tk() root.title("家計簿アプリ") root.geometry("300x280") # メニューの設定 frame = tk.Frame(root,bd=2,relief="ridge") frame.pack(fill="x") button1 = tk.Button(frame,text="入力") button1.pack(side="left") button2 = tk.Button(frame,text="表示") button2.pack(side="left") button3 = tk.Button(frame,text="終了") button3.pack(side="right") # 入力画面ラベルの設定 label1 = tk.Label(root,text="【入力画面】",font=("",16),height=2) label1.pack(fill="x") # 日付のラベルとエントリーの設定 frame1 = tk.Frame(root,pady=10) frame1.pack() label2 = tk.Label(frame1,font=("",14),text="日付") label2.pack(side="left") entry1 = tk.Entry(frame1,font=("",14),justify="center",width=15) entry1.pack(side="left") # 内訳のラベルとエントリーの設定 frame2 = tk.Frame(root,pady=10) frame2.pack() label3 = tk.Label(frame2,font=("",14),text="内訳") label3.pack(side="left") entry2 = tk.Entry(frame2,font=("",14),justify="center",width=15) entry2.pack(side="left") # 金額のラベルとエントリーの設定 frame3 = tk.Frame(root,pady=10) frame3.pack() label4 = tk.Label(frame3,font=("",14),text="金額") label4.pack(side="left") entry3 = tk.Entry(frame3,font=("",14),justify="center",width=15) entry3.pack(side="left") # 登録ボタンの設定 button4 = tk.Button(root,text="登録",font=("",16),width=10,bg="gray",command=create_sql) button4.pack() # メインループ root.mainloop()

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

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

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

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

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

mkgrei

2017/12/02 06:20

エラーの内容は何でしょうか。
suesyun

2017/12/02 06:31

お世話になっております。修正させて頂きました。
guest

回答1

0

ベストアンサー

このような場合、重要なエラーを潰してしまってデバッグができません。

except文のところを以下のように変更して、エラーを出力してください。

python

1except Exception as e: 2 print(e)

投稿2017/12/02 06:46

mkgrei

総合スコア8560

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

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

suesyun

2017/12/02 07:03

なんとか修正できました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問