2013-08-04 8 views
0

자습서를 완료했지만 완성 된 Python 해커가 아닙니다. 나는 다음과 같은 사용 MySQLdb하려고 노력하고Python - MySQLDB를 사용하여 For 루프에서 레코드 삽입

:

  • 기능을 기반으로 이러한 파일에 대한 새 파일 이름을 생성 할 디렉토리에서 파일 목록을 통해

    1. 루프는
    2. 데이터베이스를 삽입 매개 변수 새 파일 이름으로 녹음하십시오.
    3. 새 파일 이름을 사용하여 파일을 새 디렉토리로 이동하십시오.

    항목 1,2 및 4가 작동하지만 데이터베이스 삽입이 올바르게 작동하지 않습니다. 오류는 없지만 테이블에 아무 것도 삽입되지 않습니다. 명령 프롬프트를 통해 로그인하고 데이터베이스에 액세스 할 수 있으며 레코드를 테이블에 직접 삽입 할 수 있습니다.

    easy_install을 사용하여 python 2.75, mySQL 5.6.13, windows 7 64bit 및 mysql_python-1.2.4-py2.7-win32를 사용하고 있습니다.

    def moveFile(rPath, dPath, dbID): 
    import fnmatch 
    import os 
    import MySQLdb as mysql 
    import sys 
    conn = mysql.connect(host='localhost', user='*******', passwd='*******', db='*******') 
    pattern = '*.pdf' 
    inc = 0 
    for root, dirs, files in os.walk(rootPath): 
        for filename in fnmatch.filter(files, pattern): 
         dire = root.find(rootPath) + len(rootPath) 
         dest = destPath + root[dire:] 
         fname = dbID + "_" + str(inc) + ".pdf" 
         # print fname 
         # print os.path.join(root, filename), os.path.join(dest, fname) 
         # os.renames(os.path.join(root, filename), os.path.join(dest, fname)) 
         x = conn.cursor() 
         x.execute("INSERT INTO documents(documentname) VALUES (fname)") 
         inc += 1 
    
    return 'Files Count: ', inc 
    

    코드에서 어딘가에 커밋해야하지만 오류가 발생하지 않았지만 결과가 없습니다.

    내 질문에 대한 답변을 주셔서 감사합니다. 신속하게 모든 제안을 시도 할 것입니다.

    x.execute("INSERT INTO documents(documentname) VALUES (%s)", (fname,)) 
    

    을 그리고 마지막에 커밋 :

  • 답변

    1

    다음과 같이 x.execute(...) 라인을 교체합니다.

    conn.commit() 
    
    +0

    좋아요, 저는 execute 문을 바꿨지 만 커밋 문이 어디로 가야하는지 잘 모르겠습니다. fnmatch.filter (files, pattern)의 for 파일 이름 끝에 루프를 배치했지만 데이터베이스에 레코드가 삽입되지 않았습니다. 모든 도움을 주셔서 감사합니다. –

    +0

    음, 저는 바보입니다. 나는 진술서 끝에 괄호를 두는 것을 잊어 버렸다. 나는 그것들을 추가했고 삽입물은 효과가 있었다. 모든 도움을 주셔서 다시 한번 감사드립니다. –

    1

    예, 거래를 커밋하지 않는 한 확실히 DB에 결과가 표시되지 않습니다. 모든 삽입을 실행 한 후에이 작업을 수행하십시오.

    +0

    그건 내 문제를 해결 한 것이었다. 고맙습니다. –

    관련 문제