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

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

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

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

MySQL

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2673閲覧

TypeError: 'A' object is not iterableの解決方法を知りたいです

s_akira

総合スコア15

INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

MySQL

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/08/30 05:38

編集2019/08/30 05:43

実現したいこと

下記コードエラーを解決したいです。
「TypeError: 'A' object is not iterable」

コード

Python

1def insert(self, id, date): 2 # insert 3 insert = [] 4 c_insert = A( 5 id = date.get('id', None), 6 number = date.get('number', None), 7 start = datetime.datetime.now(), 8 end = datetime.date.max, 9 creat = date['creat'], 10 ) 11 contact = A(**date) 12 insert.append(contact) 13 self.__commit_all(c_insert) 14 return insert

insert = []とかあたりが問題なのかと思いますがよくわかりません。

参考URL

TypeError: 'x' is not iterable
TypeError: 'int' object is not iterableの原因について
などを参考にしています。

初歩的なことかと思います・・・
すみませんがよろしくお願い致します。

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

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

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

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

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

hayataka2049

2019/08/30 07:01 編集

質問を編集して、エラーとコードの全体(エラーはtracebackの最初から)を示してください。
meg_

2019/08/30 12:10

insert = []は問題ないでしょう。 「c_insert = A()」は何ですか?
s_akira

2019/08/31 04:45

> hayataka2049さん 今後、全体を示すようにいたします。 ご指摘ありがとうございます。わかりずらい質問で申し訳ありませんでした。 >megさん ご指摘の通り"insert=[]"は問題ありませんでした。Aは、テーブル名になります。 わかりずらい質問内容を申し訳ありませんでした。
guest

回答1

0

ベストアンサー

self.__commit_all(c_insert)の行がどうみても怪しいです。
self.__commit_allの実装がわからないのでなんとも言いようがないですが、引数をfor文で回したりmapやfilterなどのイテレータ関数を使ってそうな雰囲気ですね。
問題の根本としては、Aのインスタンスがiteratorでないことです。Aに__iter__関数または__next__関数のどちらも実装されていないとAのインスタンスはiteratorではありません。今回のケースでは、具体的なAの実装を私は知らないので、Aクラスに__iter__関数の適切な実装を追加してくださいとしか言いようがありません。

投稿2019/08/30 17:20

frodo821

総合スコア322

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

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

s_akira

2019/08/31 04:42

ご回答ありがとうございます。まさに、そこが問題でした。 うまくいえなくて申し訳ないですが、オブジェクトが1つしかないのに複数処理をしようとしていました。 comit処理を新規追加してそちらを使うように変更したらinsertできました。 また、不十分な質問内容となってしまい申し訳ありませんでした。 わかりずらいなかでのピンポイントでのご指摘ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問