2017-01-03 21 views
0

このコードInternalError:(1242 'サブクエリが1行以上を返す')

conn = pymysql.connect(user = 'root', password = '', unix_socket = "/tmp/mysql.sock", database = 'abc') 
cursor = conn.cursor() 
query2 = """INSERT INTO paragraphVector (termId, termFreq, kgram) VALUES ((SELECT termId FROM term WHERE term = %s AND kgram = %s), %s, %s)""" 

insertDocVec = [(str(term), str(kgram), tf[kgram][term], str(kgram)) for kgram in tf for term in tf[kgram]] 
cursor.executemany(query2, insertDocVec) 
conn.commit() 
+0

おそらく選択が2行以上返し、これがエラーメッセージの原因です。構文を 'insert ... select ... 'に変更したい場合は、変更後に – Shadow

答えて

1

変更を実行するときに内部エラーを取得するこの:これに

INSERT INTO paragraphVector (termId, termFreq, kgram) VALUES ((SELECT termId FROM term WHERE term = %s AND kgram = %s), %s, %s) 

INSERT INTO paragraphVector (termId, termFreq, kgram) SELECT termId, %s, %s FROM term WHERE term = %s AND kgram = %s 

と最後の2つのパラメータを左に移動

+0

の内部エラーが発生します。InternalError:(1292、"切り捨てられた不正なDOUBLE値:' lawson '") –

+0

おそらくターゲット列の精度では、指定された値を保持するには不十分です。 – GurV

0

文が間違っています。試してください:

INSERT INTO paragraphVector (termId, termFreq, kgram) 

SELECT termId , %s, %s 

FROM term WHERE term = %s AND kgram = %s 
関連する問題