자습서를 완료했지만 완성 된 Python 해커가 아닙니다. 나는 다음과 같은 사용 MySQLdb하려고 노력하고Python - MySQLDB를 사용하여 For 루프에서 레코드 삽입
:
- 루프는
- 데이터베이스를 삽입 매개 변수 새 파일 이름으로 녹음하십시오.
- 새 파일 이름을 사용하여 파일을 새 디렉토리로 이동하십시오.
항목 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,))
을 그리고 마지막에 커밋 :
좋아요, 저는 execute 문을 바꿨지 만 커밋 문이 어디로 가야하는지 잘 모르겠습니다. fnmatch.filter (files, pattern)의 for 파일 이름 끝에 루프를 배치했지만 데이터베이스에 레코드가 삽입되지 않았습니다. 모든 도움을 주셔서 감사합니다. –
음, 저는 바보입니다. 나는 진술서 끝에 괄호를 두는 것을 잊어 버렸다. 나는 그것들을 추가했고 삽입물은 효과가 있었다. 모든 도움을 주셔서 다시 한번 감사드립니다. –