(커밋 된) INSERT 문이 데이터베이스에 나타나지 않는 비슷한 문제가 있습니다. 파이썬 3.2 및 MySQL 커뮤니티 서버 5.5.19 용 PyMySQL 0.5.
가 나를 위해 솔루션을 발견 대신 실행() 메소드를 사용하는, I는 상기 executemany 방법을 사용한 실시 예에 대한 링크도있다
http://code.google.com/p/pymssql/wiki/PymssqlModuleReference 에 모듈을 참조하여 설명한다.
업데이트 잠시 후 오늘은 아직 전체 솔루션이 아니라는 사실을 알게되었습니다. python 스크립트의 끝에 너무 빠른 exit()가 발생하면 데이터가 데이터베이스에서 손실됩니다. 그래서 연결을 끊기 전에 exit()를하기 전에 time.sleep()을 추가하고 마침내 모든 데이터가 나타납니다! 내가 개발자와 추가 논의를위한 포럼/그룹 https://groups.google.com/forum/#!forum/pymysql-users을 제안
import pymysql
conn = pymysql.connect(host='localhost', user='root', passwd='', db='mydb', charset='utf8')
conn.autocommit(True)
cur = conn.cursor()
# CREATE tables (SQL statements generated by MySQL workbench, and exported with Menu -> Database -> Forward Engineer)
cur.execute("""
SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL';
DROP SCHEMA IF EXISTS `mydb` ;
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `mydb` ;
# […]
SET [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
""")
# Fill lookup tables:
cur.executemany("insert into mydb.number(tagname,name,shortform) values (%s, %s, %s)", [('ЕД','singular','sg'), ('МН','plural','p')])
cur.executemany("insert into mydb.person(tagname,name,shortform) values (%s, %s, %s)", [('1-Л','first','1st'), ('2-Л','second','2nd'), ('3-Л','third','3rd')])
cur.executemany("insert into mydb.pos(tagname,name,shortform) values (%s, %s, %s)", [('S','noun','s'), ('A','adjective','a'), ('ADV','adverb','adv'), ('NUM','numeral','num'), ('PR','preposition','pr'), ('COM','composite','com'), ('CONJ','conjunction','conj'), ('PART','particle','part'), ('P','word-clause','p'), ('INTJ','interjection','intj'), ('NID','foreign-named-entity','nid'), ('V','verb','v')])
#[…]
import time
time.sleep(3)
cur.close()
conn.close()
time.sleep(3)
exit()
(나는 또한 MyISAM 테이블을 사용하여 전환).
select 문에서 테이블의 이름을 변경하면 예외가 생성되지 않으므로 데이터베이스 서버에도이 요청이없는 것처럼 보입니다. 연결을 완전히 닫은 후 다시 열면 모든 것이 잘 작동하지만 가능한 경우이를 피하고 싶습니다. –