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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

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

Q&A

解決済

2回答

5479閲覧

PythonでMySQLの更新をした後に更新した内容を表示できない

sken

総合スコア14

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

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

0グッド

0クリップ

投稿2017/11/28 09:09

###前提・実現したいこと
PythonでDBの更新をした後に更新した内容を表示したいです

###発生している問題・エラーメッセージ
DBにデータを挿入はできているのですが挿入したデータが反映されないです
pythonを再起動すると反映されます
調べた感じだとMySQLをclose()させないと反映されないようなのですが関数の最後に
cursor.close()
connector.close()
を追記すると再度読み込みをかけた際close()されていますと言われます

なので関数の最初に
connector = MySQLdb.connect(host="localhost", db="test", user="root", passwd="hoge", charset="utf8")
cursor = connector.cursor()
を追記して再度セッションを接続しようとしたのですがcloseされたままでした
一度closeして再度セッションを接続するにはどうしたらよいのでしょうか?
よろしくお願いします

###試したこと

python

1import MySQLdb 2 3connector = MySQLdb.connect(host="localhost", db="test", user="root", passwd="hoge", charset="utf8") 4cursor = connector.cursor() 5 6n = 0 7def update(): 8 sql = "insert into test(id) value("+ n +")" 9 cursor.execute(sql) 10 connector.commit() 11 n += 1 12 13def select(): 14 sql = "select * from test" 15 cursor.execute(sql) 16 result = cursor.fetchall() 17 print (result)

updateした後selectをしてもresultの内容が更新されていない

###補足情報(言語/FW/ツール等のバージョンなど)
python2.7

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

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

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

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

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

guest

回答2

0

自己解決

別ファイルのclassで
インストラクタにconnection
デストラクタにcloseを記述して
別ファイルを参照することでconnectionからcloseまでを実現できました

投稿2017/12/01 06:15

sken

総合スコア14

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

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

mkgrei

2017/12/01 06:24

それをやらなくてもいいようにする仕組みがwith文なのです。 何がともあれ解決したようで何よりです。
sken

2017/12/01 16:00

ありがとうございます、その場しのぎの解決っぽいので時間ができた際に しっかりwith文を学びます!
guest

0

愚直に書いてみるのはどうでしょう。
with文が煩雑ですが。

python

1import MySQLdb 2 3params = {'host' : "localhost", 4 'db' : "test", 5 'user' : "root", 6 'passwd' : "hoge", 7 'charset' : "utf8"} 8n = 0 9def update(): 10 with MySQLdb.connect(**params) as cursor: 11 sql = "insert into test(id) value("+ n +")" 12 cursor.execute(sql) 13 n += 1 14 15def select(): 16 with MySQLdb.connect(**params) as cursor: 17 sql = "select * from test" 18 cursor.execute(sql) 19 result = cursor.fetchall() 20 print(result)

参考
https://qiita.com/fukkyy/items/759b25d72eb20ac2ccbe

投稿2017/11/30 09:44

編集2017/11/30 09:50
mkgrei

総合スコア8560

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問