이상한 문제가 있습니다. 두 개의 데이터베이스가 있습니다. 하나는 온라인 상점을 위해 모든 제품을 갖추고 있습니다. 다른 제품에는 온라인 상점 소프트웨어가 있으며 활성 제품 만 있습니다.파이썬 | MySQLdb -> 삽입 할 수 없습니다.
db1에서 값을 가져 와서 파이썬에서 값을 변경하고 db2에 삽입하고 싶습니다.
db1.execute("SELECT * FROM table1")
for product in db1.fetchall():
# ...
db2.execute("INSERT INTO table2 ...")
print "Check: " + str(db2.countrow)
그래서 선택을 통해 값을 얻을 수 있으며, 심지어는 db2에서 선택해도 문제가 없습니다. 내 수표는 항상 저에게 1을 제공하지만 table2에는 새로운 행이 없습니다. 자동 증가 값은 커지지 만 데이터가 없습니다. 그리고 나는 "couldnt insert"와 같은 오류도 얻지 못합니다. 그래서 아무도 무엇이 잘못 될 수 있는지 생각하지 못합니까?
편집을 (내가 phpMyAdmin을 통해 수동으로 삽입 할 경우 작동 ... 그리고 난 그냥 내 스크립트에서 SQL을 가지고 그것을 할 경우 수동으로 SQL 명령문은 aswell 일) : 여기에 대답 How do I check if an insert was successful with MySQLdb in Python?
찾을 수 매번 커밋하지 않고 실행되도록하는 방법이 있습니까? mysqldb를 감싸는 래퍼를 가지고 있으며 저에게 완벽하게 작동합니다. 커밋으로 동작을 변경하면 커다란 변화가 필요합니다.
EDIT2 : ok 나는 db1이 MyISAM (커밋없이 작동 할 것임)이고 db2는 InnoDB (사실 커밋과 만 작동하는 것 같습니다)라고 생각합니다. DB2를 MyISAM으로 변경해야합니다.
덕분에 그냥이 스레드에서 자신이 발견 : http://stackoverflow.com/questions/9014233/python-and-mysqldb-how-do-i-check-if-an- insert-was-successful –
전에는 문제가 없었습니다. 그것은 실제로 나를 정말로 괴롭힌다. 데이터베이스는 심지어 myisam 인 innodb조차도 아니다. 예전처럼 그것을 만들 수있는 방법이 없을까요? ^^ –
@xMRW autocommit을 true로 설정하는 연결 설정 매개 변수가 있어야합니다. 트랜잭션은 db integrity의 중요한 부분이므로주의를 기울이십시오. –