Python MySQLロールバックの使用

4666 ワード

Python MySQLロールバックの使用
まず、2つのテーブルを作成します.テーブルタイプはINNODB形式でなければなりません.

CREATE TABLE IF NOT EXISTS T_USER(
  USER_ID          INT(11)                 NOT NULL AUTO_INCREMENT COMMENT '  id',
  USER_NAME        VARCHAR(50)                 NOT NULL COMMENT '    ',
  PRIMARY KEY (USER_ID)
)ENGINE = INNODB, CHARSET=utf8;

CREATE TABLE IF NOT EXISTS T_HOBBY(
  USER_ID          INT(11)                 NOT NULL COMMENT '  id',
  HOBBY_ID         INT(11)                 NOT NULL AUTO_INCREMENT COMMENT '   id',
  HOBBY        VARCHAR(50)                 NOT NULL COMMENT '    ',
  PRIMARY KEY (HOBBY_ID)
)ENGINE = INNODB, CHARSET=utf8;

まず、正しいデータとSQL構文を表に挿入します.
    insertSQL1 = "INSERT INTO T_USER(USER_ID, USER_name) VALUES (1, 'wqfqewf');"
    insertSQL2 = "INSERT INTO T_HOBBY(USER_ID, HOBBY) VALUES ('1', 'asfs');"
    conn = getDbConnent()
    cursor = conn.cursor()
    try:
        cursor.execute(insertSQL1)
        cursor.execute(insertSQL2)
        cursor.close()
        conn.commit()
    except Exception, e:
        cursor.close()
        conn.rollback()

    conn.close()

上のプログラムはパスしており、両方のテーブルから対応するデータが挿入されていることがわかります.
次に、エラーのデータまたはSQL構文エラーを挿入します.
    insertSQL1 = "INSERT INTO T_USER(USER_ID, USER_name) VALUES (2, 'wqfqewf');"
    insertSQL2 = "INSERT INTO T_HOBBY(USER_ID, HOBBY) VALUES ('     ID', 'asfs');"
    conn = getDbConnent()
    cursor = conn.cursor()
    try:
        cursor.execute(insertSQL1)
        cursor.execute(insertSQL2)
        cursor.close()
        conn.commit()
    except Exception, e:
        cursor.close()
        conn.rollback()

    conn.close()

これは、対応するデータがない2つのテーブルを表示できます.
【参考】
ストレージエンジン:MyISAMとInnoDBの違い
【友情リンク】
Mac MySQLdbのインストール