Python查询MySQL数据库并输出相应信息

文章展示了如何使用Python的pymysql库连接到MySQL数据库,并从fork_info表中查询fork_ip不等于-1的所有不重复数据。代码首先建立数据库连接,然后执行SQL查询,获取所有满足条件的行,并打印每一行的Auto_ID、fork_num和fork_ip值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景描述

将fork的编号与ip信息存储在了MySQL中,数据库为forklift,数据表名为fork_info,存储格式为id+num+ip,那么如何用python去查询这些信息呢?

分析

根据提供的MySQL表结构,想从名为fork_info的数据库表中检索信息,该表有三个列:Auto_ID(整数),fork_num(整数)和fork_ip(文本类型)。

为了查询MySQL数据库并获取所需的信息,可以使用以下Python代码:

import pymysql

def connect_database(host, port, user, password, db_name):
    conn = pymysql.connect(
        host=host,
        port=port,
        user=user,
        password=password,
        db=db_name
    )
    return conn

def fetch_fork_info(conn):
    try:
        cursor = conn.cursor()
        query = "SELECT Auto_ID, fork_num, fork_ip FROM fork_info WHERE fork_ip != '-1' LIMIT 1;"
        cursor.execute(query)
        result = cursor.fetchone()
        cursor.close()
        return result
    except Exception as e:
        print("查询错误:", e)
        return None

if __name__ == "__main__":
    host = 'YOUR_HOST'
    port = 3306
    user = 'YOUR_USERNAME'
    password = 'YOUR_PASSWORD'
    db_name = 'forklift'

    try:
        # 连接数据库
        conn = connect_database(host, port, user, password, db_name)
    except Exception as e:
        print("连接错误:", e)
        exit()

    # 获取所需信息
    fork_info = fetch_fork_info(conn)
    if fork_info:
        print(f"Auto_ID: {fork_info[0]}, fork_num: {fork_info[1]}, fork_ip: {fork_info[2]}")
    else:
        print("未找到有效信息。")

    # 关闭数据库连接
    conn.close()

确保将'YOUR_HOST''YOUR_USERNAME''YOUR_PASSWORD'替换为实际的数据库连接信息。
这段代码将连接到数据库,执行SQL查询以获取fork_ip不等于-1的第一行数据,并将检索到的信息打印出来。如果没有找到有效信息,将相应打印一条提示信息。

运行结果

E:\software\python\python.exe E:/projects/Forklift/Server/fork_info_access.py

Auto_ID:1,fork_num:155599,fork_ip:198.17.12.25

 

Process finished with exit code 0

优化升级

如何输出所有不重复的数据呢?

如果想返回所有不重复的结果,而不仅仅是第一个不重复的结果,可以使用fetchall()方法来获取所有满足条件的行。修改fetch_fork_info函数如下:

def fetch_all_fork_info(conn):
    try:
        cursor = conn.cursor()
        query = "SELECT Auto_ID, fork_num, fork_ip FROM fork_info WHERE fork_ip != '-1';"
        cursor.execute(query)
        result = cursor.fetchall()
        cursor.close()
        return result
    except Exception as e:
        print("查询错误:", e)
        return None

在主函数中调用fetch_all_fork_info函数,然后使用一个循环来打印所有结果:

if __name__ == "__main__":
    host = 'YOUR_HOST'
    port = 3306
    user = 'YOUR_USERNAME'
    password = 'YOUR_PASSWORD'
    db_name = 'forklift'

    try:
        # 连接数据库
        conn = connect_database(host, port, user, password, db_name)
    except Exception as e:
        print("连接错误:", e)
        exit()

    # 获取所有不重复的信息
    all_fork_info = fetch_all_fork_info(conn)
    if all_fork_info:
        for row in all_fork_info:
            print(f"Auto_ID: {row[0]}, fork_num: {row[1]}, fork_ip: {row[2]}")
    else:
        print("未找到有效信息。")

    # 关闭数据库连接
    conn.close()

这样,它将会返回数据库中所有满足fork_ip != '-1'条件的行,并打印出每一行的Auto_IDfork_numfork_ip值。如果没有找到有效信息,它将打印相应的提示信息。记得替换'YOUR_HOST''YOUR_USERNAME''YOUR_PASSWORD'为实际的数据库连接信息。

运行结果

E:\software\python\python.exe E:/projects/Forklift/Server/fork_info_access_02.py

Auto_ID: 1, fork_num:155599,fork_ip:198.17.12.25

Auto_ID: 2, fork_num:155597,fork_ip:198.17.12.24
 

Process finished with exit code 0
### 使用 Python 操作 MySQL 数据库 #### 方法概述 Python 可以通过多种方式连接和操作 MySQL 数据库,其中最常用的是 `pymysql` 和 `MySQLdb` 库。以下是具体方法及其示例。 #### 导入库 要实现与 MySQL 的交互,首先需要导入相应的模块。对于 `pymysql` 来说,可以通过以下方式进行导入: ```python import pymysql ``` 此步骤允许程序访问 `pymysql` 提供的功能来管理数据库连接和其他操作[^1]。 #### 建立数据库连接 在成功导入所需的模块之后,下一步是建立到目标 MySQL 数据库的实际连接。这通常涉及指定主机名、用户名、密码以及默认使用的数据库名称等参数。下面是一个典型的例子: ```python connect = pymysql.connect( host='localhost', port=3306, user='root', passwd='your_passwd', # 替换为实际密码 db='your_database_name', # 替换为实际数据库名 charset='utf8' ) ``` 这里定义了一个名为 `connect` 的变量,用来保存新创建的数据库会话实例[^3]。 #### 创建游标对象 一旦建立了有效的数据库链接,则需进一步构建一个游标 (Cursor),以便于后续执行 SQL 查询命令或者读取数据记录等工作流顺利开展下去: ```python cursor = connect.cursor() ``` 该行代码初始化了一个新的光标实体,将其赋值给局部变量 `cursor` 中存储起来待用[^2]。 #### 执行SQL查询 有了前面准备好的环境支持后就可以着手编写具体的业务逻辑了——即向服务器发送请求指令处理返回的结果集。比如展示当前可用的所有数据库列表可以这样写: ```sql sql = "SHOW DATABASES;" cursor.execute(sql) print(cursor.fetchall()) ``` 这段脚本先声明了一条标准形式的 SQL 文字串存放在字符串型态下的 `sql` 属性里;接着调用了之前提到过的那个已经配置完成的对象上的 `.execute()` 函数传入刚才构造出来的那句话作为唯一参数从而触发远程服务端解析运行之动作;最后利用另一个成员函数 `.fetchall()` 把最终得到的数据集合提取出来通过简单的打印语句输出至控制台屏幕上查看效果如何[^3]。 #### 断开连接 当所有的事务都完成后记得释放资源非常重要,因此应当显式地结束本次对话过程以免造成不必要的麻烦甚至引发潜在的安全隐患等问题发生: ```python cursor.close() connect.close() ``` 这两步分别负责销毁先前分配出去的那个临时性的指针结构体还有重新断开端口之间的物理链路关系[^2]。 --- ### 示例完整代码 综合以上各部分内容可得如下一段完整的示范性源码片段: ```python import pymysql try: # 连接到数据库 connection = pymysql.connect( host="localhost", port=3306, user="root", password="your_password", database="test_db", charset="utf8mb4" ) with connection.cursor() as cursor: # 构造SQL语句 sql_query = """SELECT * FROM employees""" # 执行查询 cursor.execute(sql_query) # 获取所有结果 results = cursor.fetchall() for row in results: print(row) finally: if 'connection' in locals(): connection.close() ``` 上述代码展示了从基本设置直到清理工作的整个流程,适用于大多数常规场景下基于 Pyhton 平台开发的应用程序当中去操控 Mysql 类型的关系型数据库管理系统[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值