使用AI直接生成python连接数据库代码

要求:写一个python脚本连接sql server数据库,数据库:tn,用户名称:sa,密码:1111,读取project表单,并输出前5条数据。

代码由大模型直接生成,真是释放了程序员的工作量!!!

# -*- coding:utf-8 -*-
"""
作者: xkj
日期:2025年07月07日
"""

import pyodbc
import pandas as pd


def connect_to_sql_server():
    try:
        # 尝试不同的驱动名称
        drivers = [
            'ODBC Driver 17 for SQL Server',
            'SQL Server',
            'SQL Server Native Client 11.0',
            'ODBC Driver 13 for SQL Server'
        ]

        server = 'localhost'  # 或你的服务器IP
        database = 'tn'
        username = 'sa'
        password = '1111'

        for driver in drivers:
            try:
                conn_str = f'DRIVER={{{driver}}};SERVER={server};DATABASE={database};UID={username};PWD={password}'
                conn = pyodbc.connect(conn_str)
                print(f"成功使用驱动 [{driver}] 连接到SQL Server!")
                return conn
            except Exception as e:
                print(f"驱动 [{driver}] 连接失败: {str(e)}")

        raise Exception("所有驱动尝试均失败,请安装ODBC Driver 17 for SQL Server")

    except Exception as e:
        print(f"连接数据库时出错: {str(e)}")
        return None


def fetch_top_5_projects(conn):
    try:
        cursor = conn.cursor()
        query = "SELECT TOP 5 * FROM project"
        cursor.execute(query)

        # 获取列名和数据
        columns = [column[0] for column in cursor.description]
        rows = cursor.fetchall()

        # 使用pandas显示结果
        if rows:
            df = pd.DataFrame.from_records(rows, columns=columns)
            print("\nproject表前5条数据:")
            print(df)
        else:
            print("\nproject表中没有数据")

        cursor.close()
    except Exception as e:
        print(f"查询数据时出错: {str(e)}")


if __name__ == "__main__":
    connection = connect_to_sql_server()

    if connection:
        try:
            fetch_top_5_projects(connection)
        finally:
            connection.close()
            print("\n数据库连接已关闭")

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值