Python使用MySQLDB从For循环插入记录

2024-09-25 18:24:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经完成了教程,但我还远远不是一个熟练的python黑客。在

我尝试使用MySQLdb执行以下操作:

  1. 从目录中循环浏览文件列表
  2. 根据函数参数为这些文件生成新的文件名
  3. 使用新文件名插入数据库记录
  4. 使用新文件名将文件移到新目录。在

我有项目1,2和4工作,但不能让数据库插入工作正常。没有错误,但表中没有插入任何内容。我可以通过命令提示符登录和访问数据库,并且可以直接在表中插入一条记录。在

我使用的是python2.75、mySQL 5.6.13、windows7 64位和mySQL_python-1.2.4-py2.7-win32,使用easy_安装。在

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

我确定我需要在代码中的某个地方提交,但是我的尝试没有产生错误,但也没有结果。在

谢谢你阅读我的问题,我会尽快尝试所有的建议。在


Tags: 文件pathimport目录数据库os文件名root
2条回答

替换x.execute(...)行,如下所示:

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

最后承诺。在

^{pr2}$

是的,除非提交事务,否则在数据库中不会看到任何结果。在执行完所有的插入之后执行此操作。在

相关问题 更多 >