要求:写一个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数据库连接已关闭")
运行结果