0

これは主にmysqlの質問だと思います。

私は最近いくつかのPythonコードを継承しました(私は正確にはpythonistaではありません)。2つのクエリを作成し、それらを一度に1つずつデータベースに送信する非常に簡単なコードのようです。

query_1 = "insert into %s SELECT Foo, Bar FROM %s where Type in ('AB','BC') group by Foo;" %(filteredTable, rawTable)
self.connect(self.credentials, query_1)

query_2 = 'insert into %s SELECT a.*, b.Bar  FROM %s a left join %s b on a.Foo  = b.Foo  ;' % (finaltable, filteredTable, otherTable)
self.connect(self.credentials, query_2)

def connect(self, credentials, query):
    connection = None
    server, user, password, database = credentials
    try:
        connection = MySQLdb.connect(server, user, password, database, connect_timeout=10)
        cursor = connection.cursor()
        cursor.execute(query)
        result = cursor.fetchall()
    except MySQLdb.Error, e:
        self.logger.exception('event_description="Error with mysql"')
        raise
    if connection:
        connection.close()
    return result

query_2は機能しますが、cursor.execute( "COMMIT;")を追加しない限り、query_1は失敗します。

私は自分のコードでこれを簡単に修正できますが、なぜそうなるのかと呆然とします。一方がコミットなしで成功し、もう一方が失敗するのはなぜですか?

4

0 に答える 0