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

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

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

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

SQL

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

Python

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

Q&A

解決済

2回答

2379閲覧

pythonとSQliteで指定したデータを削除したい

tmaktgch

総合スコア9

SQLite

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

SQL

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

Python

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

1グッド

0クリップ

投稿2018/09/06 04:32

編集2018/09/06 06:41

前提・実現したいこと

初質問です
勉強を始めたばかり初心者なのですがGUI上のエントリーボックスから入力したsqliteのIDからDBの行の削除ができるようにしたいのですがsqliteでそういったこと可能でしょうか
使用言語はpython3です
GUIはtkinterです

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

### #削除ボタンが押された時の関数 def delete_sql(acc_data):   try: c = sqlite3.connect("database.db") except: print('エラーコネクト') # SQLを発行してDBへ登録 try: c.execute(""" DELETE FROM acc_data WHERE id IN (30, 31); """) c.execute("COMMIT;") print("削除しました") # 削除できなかった場合のエラー処理 except: print("エラー削除") #エントリーボックス 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") # 削除ボタンの設定 try: button4 = tk.Button(root,text="削除", font=("",16), width=10,bg="gray", command=lambda:delete_sql(entry1.get())) except: print('エラー削除ボタン')

試したこと

上のコードですと入力に関係なく30、31が消されますがGUI上の入力ボックスで指定したIDを削除したいです

a = ~ として
WHERE id=('a')にしてみるなど試してみましたができませんでした
そもそもpythonで定義したものがSQLの文内で使えるのかも教えていただきたいです。

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

ここにより詳細な情報を記載してください。

tachikoma👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

この辺りsqlite3のplaceholderを参考にしてみてください。

投稿2018/09/06 05:00

tachikoma

総合スコア3601

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

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

tmaktgch

2018/09/14 02:08

パッケージ化の概念からなんとか指定した文を消せました。 ありがとうございます
guest

0

sqliteでそういったこと可能でしょうか

可不可の質問であれば、可能です。

GUI上のエントリーボックスか

この「GUI上のエントリーボックス」によって取るべき手段がいろいろと変わってきます。
Qt?Tkinter?Webサイト構築してHTMLをブラウザで表示している?
これが分からないと誰にも回答出来ませんので、何を使ってGUIを実現しているかは絶対書くようにしてください。

共通していることは、「入力したsqliteのID」を
Python世界の変数に持ち帰る方法が何かしら用意されているはずです。
継続して調査してみてください。

WHERE id=('a')にしてみるなど試してみましたができませんでした

書き方が違うのでこれだと駄目です。
質問文の"""で囲った文字列はヒアドキュメントと呼ばれる書き方ですね。
調べてみた所、下記のサイトでヒアドキュメント内で変数を利用する方法等が紹介されていますので確認してみて下さい。

参考サイト: Pythonのヒアドキュメント - Qiita

投稿2018/09/06 04:57

編集2018/09/06 04:58
miyabi-sun

総合スコア21158

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問