1

私はチュートリアルを完了しましたが、熟達した Python ハッカーには程遠いです。

MySQLdbを使用して次のことをしようとしています:

  1. ディレクトリからファイルのリストをループする
  2. 関数パラメーターに基づいて、これらのファイルの新しいファイル名を生成します
  3. 新しいファイル名でデータベース レコードを挿入する
  4. 新しいファイル名を使用して、ファイルを新しいディレクトリに移動します。

項目 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

コードのどこかにコミットする必要があると確信していますが、私の試行ではエラーは発生しませんでしたが、結果もありませんでした。

私の質問の土地を読んでくれてありがとう。すべての提案をすぐに試します。

4

2 に答える 2

1

はい、間違いなく、トランザクションをコミットしない限り、DB に結果は表示されません。すべての挿入を実行した後にこれを行います。

于 2013-08-04T15:00:33.097 に答える