简单mysql数据库支持下的文件搜索

进行项目的原因:本人在淘宝上购买了20G的电子书,但是淘宝商家并不提供文件引索服务.为了快速的定位本地电子书位置,对电子书目录进行数据库化.

项目结构:

  使用python os库递归地查询目标文件夹下每一个文件的地址并进行暂存.

  使用python pymysql库将查询到的文件名称以及文件路径生成数据条并插入数据库中

  使用python pymysql FIND语句进行查询,并将查询文件的.py文件使用.bat进行调用,生成一个可以手动输入查询关键字的命令行程序

项目代码:

1.对于文件夹的递归遍历以及文件的数据库插入: (Insert.py)

def dirlist(path, conn, cmd):
    filelist = os.listdir(path)

    for filename in filelist:
        filepath = os.path.join(path, filename)
        if os.path.isdir(filepath):
            dirlist(filepath, conn, cmd)
        else:
            if i[0] % 1000 == 0:
                i[0] = 0
                print(filename) #动态地输出被遍历到的文件名用于显示程序进度
            cmd.execute(
                "insert into dir_guid(name,directory) values(%s,%s);",
                (filename[0:63], path[0:255]),
            )
            i[0] += 1
            conn.commit()
    return 0

其中conn 与 cmd 是 pymysql 中对于数据库连接的接口.其中***覆盖的内容根据实际数据库设定

 

conn = pymysql.connect(
    host="localhost",
    port=****,
    charset="UTF8",
    user="root",
    password="*********",
    database="****",
)
cmd = conn.cursor() #这里是将函数作为参数传入

 

 

 

注意最后需要关闭数据库的连接:

 

cmd.close()
conn.close()

 

 

 

2.对于数据库进行查询: (main.py)

 1 import pymysql
 2 import argparse
 3 
 4 
 5 def main():
 6     parser = argparse.ArgumentParser(description="请输入需要检索的文件名以及搜索参数:")
 7     parser.add_argument("ds")
 8     args = parser.parse_args()
 9     #设置命令行参数的翻译器以及读取命令行参数
10 
11     searchString = "%" + str(args.ds) + "%"
12     conn = pymysql.connect(
13         host="localhost",
14         port=3306,
15         charset="UTF8",
16         user="root",
17         password="********",
18         database="mdb",
19     )
20     cmd = conn.cursor()
21     #设置连接参数
22     cmd.execute(
23         "select name,directory from dir_guid_2 where name like '{_searchString}';".format(
24             _searchString=searchString
25         )
26     )
27     #使用查询命令进行查询
28     i = 0
29     for result in cmd.fetchall():
30         i += 1
31         string = (">>{}>>\t".format(i)) + result[1] + "\\" + result[0]
32         print(string)
33     #遍历得到的所有结果,并将其打印在命令行上
34     cmd.close()
35     conn.close()
36 
37 
38 main()

 

3.对于python查询程序的封装 : (Search.bat)

 1 @echo off
 2 cls
 3 echo. 
 4 echo please input the searching key words:
 5 set /p a=
 6 echo --------start of the searching result------
 7 echo -------------------------------------------
 8 python main.py "%a%"
 9 echo -------------------------------------------
10 echo --------end of the searching result--------
11 echo.
12 echo.
13 pause 

 

posted @ 2020-11-28 22:54  NoobSir  阅读(129)  评论(0编辑  收藏  举报