2016-08-28 12 views
0

次の手順は、mysqlクライアントからうまく動作しますが、Pythonからは実行されません。Pythonのストアドプロシージャが実行されていない、エラーなし

を接続し、カーソルが

エラーを与えない手順

CREATE DEFINER=`music-cnv`@`%` PROCEDURE `StoreFileStats`(FNAME VARCHAR(200), FEXT varchar(4), FBDIR VARCHAR(100), FRDIR VARCHAR(250), FSIZE bigint(8), FMDATE bigint(8), FCDATE bigint(8), CONVERTED tinyint(1)) 
BEGIN 
    DECLARE FCount int DEFAULT 0; 
    SELECT COUNT(FileName) INTO FCount FROM FileList where (FleRelativeDir LIKE FRDIR) AND (FileName LIKE FNAME); 
    IF FCount = 0 THEN 
     INSERT INTO FileList (FileName,FileBaseDir,FleRelativeDir,FileExt,FileSize,FileModDate,FileCDate,Con#verted) VALUES (FNAME,FBDir,FRDir,FEXT,FSize,FMDate,FCDate,CONVERTED); 
    END IF; 
END 

データ

'In the Light', 'FLAC', '/var/data/Music_FLAC', 'Led Zeppelin/Physical Graffiti, Disc 2', 51472669, 1289282499, 1458631127, False 

のPythonコード

ストアド

try: 
    myargs = [fnamesub, self.type.strip(), self.directory, 
     subdirname, fpathstat[2], fpathstat[3], 
     fpathstat[4], False] 
    result_args = mycur.callproc('StoreFileStats', myargs) 
except mysql.connector.Error as Err: 
    errno = 51 
    print('Error ' + str(errno) + ' !!!, Cannot Update MySQL Data with Name '  + fnamesub) 
    print(Err) 

コードがエラーなしで実行されますが、データベース ちょうどコミットするために必要な任意の助け

答えて

0

いただき、ありがとうございます更新されません。シェルからプロシージャを実行すると、自動コミットが有効になります。しかし、Pythonから実行する場合、手動でコミットを実行する必要があります。