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

场景描述

将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学习私人笔记,数据库,python,mysql)