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 文件夹中找到生成的可执行文件。

在游览器中运行效果如下

图片

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

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...