私はチュートリアルを完了しましたが、熟達した Python ハッカーには程遠いです。
MySQLdbを使用して次のことをしようとしています:
- ディレクトリからファイルのリストをループする
- 関数パラメーターに基づいて、これらのファイルの新しいファイル名を生成します
- 新しいファイル名でデータベース レコードを挿入する
- 新しいファイル名を使用して、ファイルを新しいディレクトリに移動します。
項目 1、2、および 4 は機能していますが、データベースの挿入が正しく機能しません。エラーはありませんが、テーブルには何も挿入されません。コマンドプロンプトからデータベースにログインしてアクセスでき、レコードをテーブルに直接挿入できます。
私はpython 2.75、mySQL 5.6.13、Windows 7 64ビット、およびeasy_installを使用してインストールされた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
コードのどこかにコミットする必要があると確信していますが、私の試行ではエラーは発生しませんでしたが、結果もありませんでした。
私の質問の土地を読んでくれてありがとう。すべての提案をすぐに試します。