다음 코드를 가지고 있으며 "입력"테이블의 첫 번째 행에 대해서만 트릭을 수행 할 수 있습니다. 중첩 루프에있는 두 커서 사이에 명확한 관계가 없다는 것을 알고 있지만 중첩 된 for-for 루프를 시도하고 동일한 결과를 얻었습니다. 파이썬 3.4 사용하고 있습니다.커서가있는 중첩 for 루프는 파이썬에서 첫 번째로 원하는 결과 만 가져옵니다.
아이디어는 테이블 비교의 테이블에있는 행을 비교하는 것입니다. 수식에서 주어진 결과가 5보다 작 으면 주어진 테이블의 ids (row [0] & rowx [0])를 출력하고 output이라는 새로운 테이블에있는 수식의 결과. 문제는 입력 테이블의 첫 번째 레코드에서만 작동한다는 것입니다.
db_connection = pypyodbc.connect(connection_str)
db_connection2 = pypyodbc.connect(connection_str)
db_connection3 = pypyodbc.connect(connection_str)
db_cursor = db_connection.cursor()
db_cursor2 = db_connection2.cursor()
db_cursor3 = db_connection3.cursor()
db_cursor.execute("SELECT * FROM input")
db_cursor2.execute("SELECT * FROM comparetable")
for row in db_cursor:
for rowx in db_cursor2:
idoriginal = row[0]
idcomparable = rowx[0]
result = formula(float(row[1]), float(row[2]), float(rowx[1]), float(rowx[2]))
if result < 5:
db_cursor3.execute("INSERT INTO output (id, idcomparable, result) VALUES (?, ?, ?)",(idoriginal,
idcomparable, result))
db_cursor3.commit()
아이디어가 있으십니까? 희망은 어리석은 짓입니다. 나는 이미 이것을 post에 체크했으나 아직도 해결 방법을 모른다.
당신이 설명 할 수 코드 문제에 대해 더 알고 싶습니까? – Kasramvd
'db_connection','db_connection2' 및'db_connection3'은 어떻게 초기화합니까? – NPE
두 번째 질문에 답하기 위해 코드를 편집했습니다. 이 아이디어는 테이블 입력의 행을 비교 가능한 테이블의 행과 비교하고 수식에서 제공된 결과가 5보다 작 으면 주어진 테이블의 ids (row [0] & rowx [0])와 수식은 출력이라고하는 새로운 테이블에 있습니다. 문제는 입력 테이블의 첫 번째 레코드에만 문제가 있다는 것입니다. – Maik