Python的小应用--使用PyWebIO和PyMySQL创建身份证号码查询工具
创始人
2025-07-06 12:00:37
0

最近,我的好哥们给我提了一个新的需求,让我用Python编程语言和MySQL数据库创建一个简单的身份证号码查询工具。这个工具可以扫描指定文件夹中的文件名,并将它们存储到MySQL数据库中。用户只需输入身份证号码,就可以查询文件名中是否包含这个身份证号码。

其中,界面部分我决定使用PyWebIO,PyWebIO提供了一系列命令式的交互函数来在浏览器上获取用户输入和进行输出,将浏览器变成了一个“富文本终端”,可以用于构建简单的Web应用或基于浏览器的GUI应用。PyWebIO还可以方便地整合进现有的Web服务,不需要编写HTML和JS代码,就可以构建出具有良好可用性的应用。

准备工作

首先,确保你已经安装了必要的 Python 库。你可以使用以下命令安装它们:

pip install pymysql pywebio

接下来,我们需要一个 MySQL 数据库来存储文件名。在这里,我们将数据库配置信息存储在一个 JSON 文件中,以方便管理和更新。

import json


with open(r"path/to/your/config.json", 'r', encoding='utf-8') as f:
    db_config = json.loads(f.read())

数据库操作

我们将使用 PyMySQL 库来连接 MySQL 数据库,创建一个表来存储文件名,并实现插入和查询操作。

def create_table(connection):
    # 创建数据库表
    create_table_query = """
    CREATE TABLE IF NOT EXISTS files (
        id INT AUTO_INCREMENT PRIMARY KEY,
        file_name VARCHAR(255) NOT NULL UNIQUE
    )
    """
    try:
        with connection.cursor() as cursor:
            cursor.execute(create_table_query)
        connection.commit()
    except Error as e:
        print(f"Error: {e}")


def insert_filename(connection, filename):
    # 插入文件名到数据库表
    insert_query = "INSERT INTO files (file_name) VALUES (%s)"
    try:
        with connection.cursor() as cursor:
            cursor.execute(insert_query, (filename,))
        connection.commit()
    except Error as e:
        print(f"Error: {e}")


def get_filenames_from_db(connection):
    # 从数据库中获取所有文件名
    select_query = "SELECT file_name FROM files"
    try:
        with connection.cursor() as cursor:
            cursor.execute(select_query)
            result = cursor.fetchall()
            return [row[0] for row in result]
    except Error as e:
        print(f"Error: {e}")
        return []

文件夹扫描和数据存储

接下来,我们将使用 Python 的 os 模块扫描文件夹中的文件,并将文件名插入到数据库中。

import os


def scan_folder_and_insert(connection):
    # 扫描文件夹并将文件名插入数据库
    folder_path = r'C:\path\to\your\folder'
    for filename in os.listdir(folder_path):
        if os.path.isfile(os.path.join(folder_path, filename)):
            insert_filename(connection, filename)

PyWebIO Web 界面

现在,我们将使用 PyWebIO 创建一个简单的 Web 界面,允许用户输入身份证号码并查询数据库。

from pywebio import start_server
from pywebio.input import input, TEXT
from pywebio.output import put_text, put_table


def search_file_by_id(connection):
    id_number = input("请输入身份证号码:", type=TEXT)
    filenames = get_filenames_from_db(connection)
    results = [filename for filename in filenames if id_number in filename]
    if results:
        put_table([(result,) for result in results], header=['文件名'])
    else:
        put_text("没有找到包含身份证号码的文件名。")


if __name__ == "__main__":
    # 连接到MySQL数据库
    try:
        with connect(**db_config) as connection:
            create_table(connection)
            scan_folder_and_insert(connection)
            # 启动Web界面
            start_server(search_file_by_id, port=80)
    except Error as e:
        print(f"Error: {e}")

打包为可执行文件

最后,我们可以使用 PyInstaller 工具将 Python 脚本打包为可执行文件。打开命令行终端,执行以下命令:

pyinstaller -F -w your_script_name.py

请将 your_script_name.py 替换为你的 Python 脚本文件名。执行完毕后,你将在 dist 文件夹中找到生成的可执行文件。

在游览器中运行效果如下

图片

通过这个简单的工具,用户可以轻松地查询文件名中是否包含特定身份证号码。当然,这只是一个灵活的基础,可以根据需要继续扩展和定制功能。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...