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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Python

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

Q&A

解決済

1回答

1777閲覧

Python: fetchall()の動作が無反応?? でも.fetchone()に切り替えると 次ステップへ移る

saya24

総合スコア227

SQL

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Python

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

0グッド

0クリップ

投稿2020/03/06 06:35

OS:Windows10x64
Language:Python:3.6.6
IDE:Eclipse

DBからのSELECT結果=データ量が単純に多いからかなぁ...?と .fetchall()の部分から次のステップへ移らない状況をある程度我慢して待っていたのですが、いっこうに進展みられずこれは尋常じゃない!!と思いはじめ 問い合わせに至りました。

Eclipseのステップ実行(デバッグ)で試しています。PIDという番号がふられWindowsのタスクマネージャで明細に表れていることは確認できていますが、実際動作が進展していっているのか否か分からない状況です。

試しに.fetchone()へ 切り替えてみたら 次ステップへすぐさま移ることも確認できています。
当方、どういった確認をとって、事態の克服を行うべきでしょうか?

以下コーディングは tryの中に入っています。異常終了でもしれくれれば 内容の把握・対策着手に入れるのですが、進行中なのか・保留されているのかさえ認識できず 頭を悩ましています。

DBMSはOracleですが、単純に確認方法という面で、幅広いご見解を頂けますと幸いです、よろしくお願いいたします。  

Python

1cur = con.cursor() 2cur.execute(sql) 3 4 5# 抽出結果を取得 6#fetch_dat = cur.fetchall()    こちらだと 次のFor文に いつになっても 移らない 7fetch_dat = cur.fetchone() 8 9for r in fetch_dat: 10 print (r) 11

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

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

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

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

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

hayataka2049

2020/03/06 06:38

死ぬほどたくさん取れてる可能性とかはありますか? 何百万とか
saya24

2020/03/06 06:43

hayataka2049さん レコード数 : 10,000件の項目数が56列のデータ群を JSON文字列で取り出そうとしています。つまりは... 死ぬほど、ということになりますかね??? 各列の属性も長いものは長いです。
guest

回答1

0

ベストアンサー

fetchmanyが全部のデータを取ってきてから返るのであれば、実行中に使用メモリが徐々に増えていくのが簡単にはタスクマネージャーなどで観察できると思います。fetchallから返るのが遅いので解決法を得る上でその原因を探りたく、更に確認方法を知りたいのが本質問の主旨なのだと思いますが、fetchmanyの利用でバランスを取ることを考えても良いかと思います。その方がその時々で取ってくるデータ量の大小に大きく影響しない作りにできるのではないでしょうか。

Python Oracle SQL(select文)データ取得方法(fetchall、fetchmany、fetchone)とチューニングパラメータ - Qiita

投稿2020/03/06 07:06

dodox86

総合スコア9183

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

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

saya24

2020/03/06 09:58

dodox86さん 貴重なご見解をありがとうございました。 ご紹介された記事にあったようにSQL発行前に cur.arraysize = 1000としたら 無事進行が確認できるようになりました。本当に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問