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

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

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

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Python 3.x

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

Q&A

解決済

1回答

570閲覧

insertを実行すると、"InterfaceError: not a query"

fhiro_tokio

総合スコア66

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Python 3.x

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

0グッド

0クリップ

投稿2023/05/17 08:02

編集2023/05/18 00:47

実現したいこと

oracle データベースに対して、insert を実行すると、"InterfaceError: not a query" のエラーになるので、解消する方法を教えてください。

前提

変数dataには、以下のデータが入っています。
data= ('2023-05-16', 1, 1, '', '2064801', 'A100', '', '', 'GE2122', '', '', '', '', '', '', '', '', '', '', '', '')

insert の values の個数と data の個数は同じになっています。

【情報の追加】
この data は、別のテーブルから select した結果を編集したものです。
cx_Oracle.connect .... as conn
cur = conn.cursor()
を定義し、cur.execute(sql_select) で、データを取得した後、cur.execute(sql_insert,data) しています。

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

InterfaceError: not a query

該当のソースコード

sql_insert = 'insert into TBLA \ (SAGYO_DATE, NIPPOU_NO, MEI_NO,\ SAGYO_KANRI_BUSYO, SAGYO_COMPANY, SAGYO_BUSYO, SAGYO_CONTENT,\ SAGYO_PERSON, SETSUBI_NO, SYOKUSYU, SETSUBI, NEXT_DAY_KB,\ SAGYO_ST, SAGYO_END, REST_TIME, KENSYU_SU, CYUMON_NO,\ GYOBAN, SHIHARAI_KB, STEEL_TASK_NO, GENKA_BUNRUI)\ VALUES\ (:1, :2, :3,\ :4, :5, :6, :7,\ :8, :9, :10, :11, :12,\ :13, :14, :15, :16, :17,\ :18, :19, :20, :21)' data = sagyo_date, clm_nippou_no, meisai_no,\ clm_sagyo_kanri_busyo, clm_sagyo_company, clm_sagyo_busyo, clm_sagyo_content,\ clm_sagyo_person, clm_setsubi_no, clm_syokusyu, clm_setsubi, clm_next_day_kb,\ clm_sagyo_st, clm_sagyo_end, clm_rest_time, clm_kensyu_su, clm_cyumon_no,\ clm_gyoban, clm_shiharai_kb, clm_steel_task_no, clm_genka_bunrui cur.execute(sql_insert,data)

テーブル定義

以下のテーブルへ insert しよとしています。

Create Table TBLA ( CREATED_DATE Date , CREATED_BY VARCHAR2(32) , CREATED_PRG_NM VARCHAR2(32) , UPDATED_DATE Date , UPDATED_BY VARCHAR2(32) , UPDATED_PRG_NM VARCHAR2(32) , MODIFY_COUNT NUMBER(5,0) , SAGYO_DATE Date , NIPPOU_NO NUMBER(3,0) , MEI_NO NUMBER(3,0) , SAGYO_KANRI_BUSYO CHAR(4) , TOKUI_COMPANY VARCHAR2(7) , JUCYU_BUSYO VARCHAR2(8) , SAGYO_COMPANY CHAR(7) , SAGYO_BUSYO CHAR(4) , SAGYO_CONTENT VARCHAR2(64) , SAGYO_PERSON CHAR(8) , SETSUBI_NO CHAR(10) , SYOKUSYU CHAR(10) , SETSUBI CHAR(10) , ZAIRYO VARCHAR2(4) , NEXT_DAY_KB CHAR(1) , SAGYO_ST CHAR(4) , SAGYO_END CHAR(4) , REST_TIME NUMBER(1,0) , KENSYU_SU NUMBER(3,0) , CYUMON_NO CHAR(4) , GYOBAN CHAR(3) , SHIHARAI_KB CHAR(2) , STEEL_TASK_NO CHAR(6) , GENKA_BUNRUI CHAR(2) , BIKO VARCHAR2(64) , Constraint TBLA_Pkey Primary Key ( SAGYO_DATE, NIPPOU_NO, MEI_NO) USING INDEX PCTFREE 10 STORAGE ( INITIAL 274K NEXT 28K PCTINCREASE 0 ) ) PCTUSED 40 STORAGE ( INITIAL 7676K NEXT 768K PCTINCREASE 0 ) TABLESPACE NAAJ_DATA;

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

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

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

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

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

guest

回答1

0

自己解決

原因が分かりました。
cur.execute(sql_select) で取得した後、for row in cur: 内で、cur.execute(sql_insert,data) を実行していたのですが、cur.execute(sql_select) の後に、rows = cur.fetchall() を行い、for row in rows: に変更したところ、エラーが解消されました。

投稿2023/05/18 01:35

fhiro_tokio

総合スコア66

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問