利用python中pyodbc操作MSSQL数据库

news/2024/12/1 15:29:30/

pyodbc是一个用于Python的开源库,用于连接和操作多种数据库管理系统(DBMS),其中包括Microsoft SQL Server、Oracle、MySQL、PostgreSQL等。它提供了一个简单和统一的接口,使开发人员可以使用Python编程语言来访问和操作数据库。

以下是pyodbc的一些主要特点和功能:

  1. 数据库连接:pyodbc允许您建立与各种DBMS的数据库连接。通过提供合适的连接字符串,您可以连接到不同类型的数据库。

  2. 执行SQL语句:使用pyodbc,您可以执行各种SQL语句,如查询(SELECT)、插入(INSERT)、更新(UPDATE)和删除(DELETE)。您可以执行原始SQL语句或使用参数化查询来提高安全性和性能。

  3. 事务支持:pyodbc支持事务处理,您可以在事务中执行多个SQL操作,并在需要时进行提交或回滚。

  4. 结果获取:执行查询后,您可以使用pyodbc获取返回的结果集。您可以迭代结果集并访问每行的数据。

  5. 存储过程调用:pyodbc允许您调用数据库中的存储过程。您可以传递参数给存储过程,并处理返回的结果集。

  6. 数据类型转换:pyodbc提供了对常见数据库和Python数据类型之间的自动转换支持。它可以处理整数、字符串、日期、时间等各种数据类型之间的转换。

  7. 异常处理:pyodbc会引发适当的异常,以便您可以捕获和处理连接、执行和其他数据库操作中可能出现的错误。

总体而言,pyodbc是一个功能强大且灵活的库,使Python开发人员能够轻松地与各种数据库进行交互。它为数据库操作提供了简单、一致的接口,并且在使用不同的DBMS时保持了一致性,从而使开发人员能够更加专注于应用程序的开发。

-------------------------------------------

该示例程序将执行查询操作,插入一条新数据,更新数据,删除数据,并调用名为GetCustomerDetails的存储过程来检索客户详细信息。您可以根据您的实际需求进行修改和扩展。请注意,您需要将<server_name><database_name><username><password>替换为实际的数据库连接信息。同样,您还需要根据您的数据库架构将查询语句、插入数据和存储过程调用进行相应的更改。

import pyodbc# 连接数据库
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=<server_name>;DATABASE=<database_name>;UID=<username>;PWD=<password>')# 创建游标
cursor = conn.cursor()# 执行查询操作
def select_data():cursor.execute("SELECT * FROM Customers")rows = cursor.fetchall()for row in rows:print(row)# 执行插入操作
def insert_data():insert_query = "INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country) VALUES (?, ?, ?, ?, ?, ?)"values = ('John Doe', 'John', '123 Main St', 'New York', '10001', 'USA')cursor.execute(insert_query, values)conn.commit()print("Data inserted successfully.")# 执行更新操作
def update_data():update_query = "UPDATE Customers SET City = ? WHERE CustomerID = ?"values = ('Los Angeles', 1)cursor.execute(update_query, values)conn.commit()print("Data updated successfully.")# 执行删除操作
def delete_data():delete_query = "DELETE FROM Customers WHERE CustomerID = ?"value = 2cursor.execute(delete_query, value)conn.commit()print("Data deleted successfully.")# 调用存储过程
def call_stored_procedure():stored_procedure = "{CALL GetCustomerDetails(?)}"customer_id = 1params = (customer_id,)cursor.execute(stored_procedure, params)rows = cursor.fetchall()for row in rows:print(row)# 执行示例操作
select_data()
insert_data()
update_data()
delete_data()
call_stored_procedure()# 关闭游标和连接
cursor.close()
conn.close()
import pyodbc# 连接数据库
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=<server_name>;DATABASE=<database_name>;UID=<username>;PWD=<password>')# 创建游标
cursor = conn.cursor()# 执行查询操作
cursor.execute("SELECT * FROM <table_name>")
rows = cursor.fetchall()
for row in rows:print(row)# 执行插入操作
insert_query = "INSERT INTO <table_name> (column1, column2) VALUES (?, ?)"
values = ('value1', 'value2')
cursor.execute(insert_query, values)
conn.commit()# 执行更新操作
update_query = "UPDATE <table_name> SET column1 = ? WHERE column2 = ?"
values = ('new_value', 'condition_value')
cursor.execute(update_query, values)
conn.commit()# 执行删除操作
delete_query = "DELETE FROM <table_name> WHERE column = ?"
value = 'value_to_delete'
cursor.execute(delete_query, value)
conn.commit()# 调用存储过程
stored_procedure = "EXEC <stored_procedure_name> ?, ?"
param1 = 'param1_value'
param2 = 'param2_value'
cursor.execute(stored_procedure, (param1, param2))
conn.commit()# 关闭游标和连接
cursor.close()
conn.close()
import pyodbc
conn = pyodbc.connect('DSN=sql2016')# pyodbc.connect  连接数据库
# xxx.cursor()	创建游标
# cursor.execute()	所有的SQL语句运行
# cursor.rowcount 获取SQL语句执行的条数
# cursor.commit()	提交数据
# cursor.close()	关闭游标
# connect.close()	断开连接
print('-------------1----------------')
sql1= r"SELECT * FROM Customers"
cursor = conn.cursor()
cursor.execute(sql1)
# rows=cursor.fetchall() #将返回所有结果,返回二维元组,如((‘a’,‘b’),(‘a2’,b2’)),
# for row in rows[0:10]:
#    print("CustomerId: %-6s CustomerName: %-10s Email: %-20s" % (row[0], row[1],row[2])) 
# print('-----------2----------------')
row = cursor.fetchone()  #依次取得下一条结果,直到为空
while row: #print(row[0],row[1],row[2])print("CustomerId: %-6s CustomerName: %-10s Email: %-20s" % (row[0], row[1],row[2]))  row = cursor.fetchone()print('------------3-----------------')# import pandas as pd  # 导入pandas库
# sql2 = r"SELECT * FROM Customers"
# data = pd.read_sql(sql=sql2,con=conn,coerce_float=True)
# print(data[0:10])
cursor.close()
conn.close()


http://www.ppmy.cn/news/493994.html

相关文章

C++——string容器模拟实现

目录 1. 基本成员变量 2. 默认成员函数 2.1 构造函数 2.2 析构函数 2.3 拷贝构造函数 2.4 赋值运算符重载 3. 容量与大小相关函数 3.1 size 3.2 capacity 4. 字符串访问相关函数 4.1 operator[ ]重载 4.2 迭代器 5. 增加函数接口 5.1 reserve 5.2 resize 5.3 …

C++虚函数表指针在内存中的位置

C虚函数表指针在内存中的位置 多态就是多种形态&#xff0c;C的多态分为静态多态与动态多态。 静态多态就是编译器根据函数实参的类型判断出要调用哪个函数。比如函数重载和函数模板。动态多态依靠的是虚函数表和动态绑定机制&#xff0c;因为是在运行时根据对象的类型在虚函…

智能开关面板行业概览

智能开关产品在全球市场的渗透率在2018年首次突破1%&#xff0c;并在之后的几年保持稳定的攀升态势。中国精装房自2019年开始逐步配置智能开关&#xff0c;直至2021年中国精装房智能开关配套率已达15%&#xff0c;作为智能家居最重要的交互入口之一&#xff0c;智能开关在未来的…

浅谈(零火)智能开关和(单火)智能开关的工作原理和优势区别

本文我们将浅谈(零火)智能开关和(单火)智能开关的工作原理和优势区别。在探讨这两类产品之前&#xff0c;小编先带大家了解一下"什么是智能开关?" 智能开关是指利用控制板和电子元器件的组合及编程&#xff0c;以实现电路智能开关控制的单元。在电子墙壁开关的基础上…

智能开关设计设计

智能插座设计方案 一、硬件 WIFI模块&#xff08;ESP8266&#xff09;、单片机&#xff08;stc12c5a60s2&#xff09;、4路5V继电器、插线板 二、技术 串口通信、android、C语言 三、实现方案 1、模块初始化 (1)、设置wifi模块为APStation模式&#xff08;设置模块作为路由…

el-switch开关

el-switch开关在表格中调用 效果图 注意&#xff1a;avue-switch在表格中用change事件可能会出现自动加载情况&#xff0c;用el-switch不会 1.加入el-switch标签并设置change事件 代码 <template slot"status" slot-scope"scope" > <el-…

HALL开关介绍

一、HALL开关原理及手机应用 手机中用来控制线路通断的器件主要有三种类型&#xff1a;开关、干簧管和霍尔元件。不同的是开关一般是由人工 手动控制&#xff0c;而干簧管和霍尔元件则通过磁信号来控制线路的通与断。霍尔&#xff08;HALL&#xff09;传感器是一种电子元件&…

智能家居Homekit系列一智能触摸开关

触摸开关&#xff0c;即通过触摸方式控制的墙壁开关&#xff0c;其感官场景如同我们的触屏手机&#xff0c;只需手指轻轻一点即可达到控制电器的目的&#xff0c;随着人们生活品质的提高&#xff0c;触摸开关将逐渐将换代传统机械按键开关。 触摸开关控制原理 触摸开关我们把…