저는 pymssql을 사용하여 Azure에서 MS SQL DB에 연결하고 CSV 파일에서 레코드를 삽입합니다. 연결이 성공하고 executemany 매개 변수에 사용 된 목록에 올바른 형식 및 올바른 값 개수의 모든 데이터가 포함되어 있는지 확인했습니다. 그러나 스크립트를 실행하면 0 개의 행이 삽입되지만 오류는 발생하지 않습니다.pymssql을 사용하여 Azure에서 MS SQL DB에 성공적으로 연결했습니다. INSERT 문은 오류 메시지없이 실행되지만 0 행이 삽입되었습니다.
나는 주위를 둘러 보았고 비슷한 것을 경험 한 대부분의 사람들이 commit()을 놓치고있는 것 같았지만 여기에는 문제가 없다.
다음은 코드입니다. 어떤 도움이라도 대단히 감사합니다.
with open('file.csv') as csvfile:
data = csv.reader(csvfile)
next(data)
dicts = ({'col1': line[0], 'col1': line[1], 'col3': line[2], 'col4': int(line[3]), 'col5': int(line[4]), 'col6': float(line[5])} for line in data)
to_db = ((i['col1'], i['col2'], i['col3'], i['col4'], i['col5'], i['col6']) for i in dicts)
cursor.executemany(
'INSERT INTO myTable VALUES (%s, %s, %s, %d, %d, %f)',
to_db)
print str(cursor.rowcount) + " rows inserted"
conn.commit()
편집 : 나는 성공적으로 데이터베이스에 행을 삽입 할 수있는 쿼리를 사용하여 cursor.execute()를 실행하고 쿼리에 명시 적으로 값을 포함 할 경우 (예를 들어 아래 참조).
cursor.execute("INSERT INTO myTable VALUES ('4/18/2016','test','test',0,0,0.0)")
그러나 cursor.executemany (동작 파라미터) 구문과 매개 변수로 값의리스트를 전달할 사용자 I이라면이 잘못된 구문 오류가 발생
.cursor.executemany("INSERT INTO myTable VALUES(%s,%s,%s,%d,%d,%f)",list_of_values)
난 그냥 단지 % s 및 % d를 지원하는 module reference에 읽고 있었다. 그래서 그게 문제라고 생각합니다. 그러나 나는 어떻게 부유물을 통과합니까?
콘솔에서 이와 같은 샘플 쿼리를 실행하려고하면 어떻게됩니까? – Ares
MS SQL Server Management Studio에서 행을 성공적으로 삽입 할 수 있습니다. – michoco
파이썬 스크립트가 행이 변경되지 않았다고 말합니까? 변경 사항이 DB에 반영됩니까? – Ares