2014-09-25 3 views
0

pymysql을 사용하여 mysql 데이터베이스에 삽입하려고합니다. 삽입 및 호출 커밋 후에 데모로 모든 행을 선택하고 인쇄합니다. 새 행이 인쇄되지만 마지막으로 추가 된 행만 표시 (인쇄)되고 auto_incremented Id 필드가 증가하지만 코드를 실행 한 시간과 관계없이 한 행만 표시됩니다. mysql 커맨드 라인 셀렉트 나 Sequel Pro의 "Contents"탭에는 행이 표시되지 않습니다. 나는 모든 관련 "비슷한 질문들"을 검토했다고 믿는다.pymysql을 사용하여 변경 한 내용이 데이터베이스에 "유지"되지 않음

고마워. 인쇄

import pymysql 

connCost = pymysql.connect(host='127.0.0.1', port=3306, user='*****', passwd='********', db='CU_COST') 
testCur = connCost.cursor() 
vF1 = 321 
vF2 = '/zero#' 
# Transaction implictily started? 
query = "Insert Into testInsert (F1, F2) Values(" + str(vF1) + ", '" + vF2 +"')" 
testCur.execute(query) 
connCost.commit 
testCur.execute("Select * From testInsert") 
rows = testCur 
for row in rows: 
    print row 

testCur.close 
connCost.close 

결과 (코드 9 번 실행 후)

2.7.5 (v2.7.5:ab05e7dd2788, May 13 2013, 13:18:45) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] 
Python Type "help", "copyright", "credits" or "license" for more information. 
[evaluate testInsert2.py] 
(9, 321, '/zero#') 
+0

부주의로 "vF1 = 321"oops ... – beachboy

+0

명시 적으로 "트랜잭션 시작"및 "커밋"( .execute ("트랜잭션 시작") 사용)을 추가했는데 변경 사항이 지속되는 것 같습니다. . MySql이 암시 적으로 트랜잭션을 시작했으며 .commit을 사용하면 동일한 결과를 얻는 것으로 연구에서 추측하고있었습니다. 어떻게 저것은 저를 위해 작동하지 않는 것을 보인다. 내가 뭔가를 놓치고 있다면 듣고 싶다. 감사 – beachboy

답변

0

커밋 함수이다. 따라서 다음과 같이 호출해야합니다.

connCost.commit() 

해결해야합니다.