我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python中的pymssql操作MSSQL数据库

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python中的pymssql操作MSSQL数据库

在Python中,pymssql是一个用于与Microsoft SQL Server数据库进行交互的第三方库。pymssql提供了连接到数据库、执行SQL查询、插入、更新和删除数据等功能。下面我将详细介绍如何使用pymssql进行MSSQL数据库操作。

安装pymssql库 首先,确保你的Python环境已经安装了pymssql库。你可以使用pip工具进行安装

pip install pymssql

  • 插入、更新和删除数据

使用pymssql库,你可以执行插入、更新和删除数据的操作。 

import pymssql# 连接参数server = 'server_name'database = 'database_name'username = 'username'password = 'password'# 建立连接conn = pymssql.connect(server=server, database=database, user=username, password=password)# 创建游标对象cursor = conn.cursor()# 执行SQL查询cursor.execute("SELECT * FROM your_table")# 获取查询结果result = cursor.fetchall()# 遍历结果for row in result:    print(row)# 插入数据insert_query = "INSERT INTO your_table (column1, column2) VALUES (%s, %s)"insert_data = ('value1', 'value2')cursor.execute(insert_query, insert_data)# 更新数据update_query = "UPDATE your_table SET column1 = %s WHERE id = %s"update_data = ('new_value', 1)cursor.execute(update_query, update_data) #参数化查询# 删除数据delete_query = "DELETE FROM your_table WHERE id = %s"delete_data = (1,)cursor.execute(delete_query, delete_data)# 提交事务conn.commit()# 关闭游标cursor.close()
  •  管理事务

以确保一组数据库操作要么全部成功,要么全部回滚。 

# 创建游标对象cursor = conn.cursor()try:    # 开始事务    conn.begin()    # 执行数据库操作    cursor.execute("INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2')")    cursor.execute("UPDATE your_table SET column1 = 'new_value' WHERE id = 1")    # 提交事务    conn.commit()except Exception as e:    # 回滚事务    conn.rollback()    print("Error:", e)# 关闭游标cursor.close()
  • 查询结果处理

# pymssql返回的查询结果是一个元组列表,其中每个元组表示一行数据。你可以通过遍历查询结果来逐行处理数据。 

# 查询结果处理# pymssql返回的查询结果是一个元组列表,其中每个元组表示一行数据。你可以通过遍历查询结果来逐行处理数据。# 创建游标对象cursor = conn.cursor()# 执行查询cursor.execute("SELECT column1, column2 FROM your_table")# 获取查询结果result = cursor.fetchall()# 遍历结果for row in result:    column1_value = row[0]    column2_value = row[1]    # 处理数据# 关闭游标cursor.close()
  •  处理大型结果集

如果查询结果集非常大,无法一次性全部加载到内存中,可以使用pymssql提供的fetchone()fetchmany()方法来逐步获取结果集的数据。

# 创建游标对象cursor = conn.cursor()# 执行查询cursor.execute("SELECT column1, column2 FROM your_table")# 获取一条记录row = cursor.fetchone()while row:    # 处理数据    print(row)    # 获取下一条记录    row = cursor.fetchone()# 关闭游标cursor.close()

 

  •  批量插入数据

# 如果你需要插入大量数据到数据库,一次插入一行可能效率较低。pymssql允许你使用executemany()方法进行批量插入,一次插入多行数据。

# 批量插入数据# 如果你需要插入大量数据到数据库,一次插入一行可能效率较低。pymssql允许你使用executemany()方法进行批量插入,一次插入多行数据。# 创建游标对象cursor = conn.cursor()# 准备插入数据data = [('value1', 'value2'),        ('value3', 'value4'),        ('value5', 'value6')]# 执行批量插入insert_query = "INSERT INTO your_table (column1, column2) VALUES (%s, %s)"cursor.executemany(insert_query, data)# 提交事务conn.commit()# 关闭游标cursor.close()
  •  存储过程调用

# pymssql也支持调用MSSQL数据库中的存储过程。你可以使用execute_proc()方法来执行存储过程。

# 存储过程调用# pymssql也支持调用MSSQL数据库中的存储过程。你可以使用execute_proc()方法来执行存储过程。# 创建游标对象cursor = conn.cursor()# 执行存储过程cursor.execute_proc('your_stored_procedure_name', ('param1', 'param2'))# 获取结果result = cursor.fetchall()# 关闭游标cursor.close()
  •  分页查询

当处理大量数据时,分页查询是一种常见的需求。可以使用pymssql的OFFSETFETCH语句来实现分页查询。通过调整page_sizepage_number参数,可以获取指定页数的数据。

# 定义分页参数page_size = 10page_number = 1# 执行分页查询query = f"SELECT column1, column2 FROM your_table ORDER BY column1 OFFSET {page_size * (page_number - 1)} ROWS FETCH NEXT {page_size} ROWS ONLY"cursor.execute(query)result = cursor.fetchall()for row in result:    # 处理数据
# 创建游标对象cursor = conn.cursor()# 定义分页查询语句page_size = 10  # 每页的记录数page_number = 1  # 页码offset = (page_number - 1) * page_size  # 计算偏移量query = f"SELECT column1, column2 FROM your_table ORDER BY column1 OFFSET {offset} ROWS FETCH NEXT {page_size} ROWS ONLY"# 执行分页查询cursor.execute(query)# 处理查询结果result = cursor.fetchall()for row in result:    # 处理数据# 关闭游标cursor.close()

 

  • 处理数据库连接错误

在连接数据库时,可能会遇到连接错误。可以通过捕获pymssql库引发的pymssql.OperationalError异常来处理连接错误。 

import pymssqltry:    conn = pymssql.connect(server='server_name', database='database_name', user='username', password='password')    # 连接成功,执行数据库操作    cursor = conn.cursor()    # 执行查询、插入、更新等操作    # ...    conn.commit()    cursor.close()    conn.close()except pymssql.OperationalError as e:    # 处理连接错误    print("Connection Error:", e)
import pymssqltry:    # 连接数据库    conn = pymssql.connect(server='server_name', database='database_name', user='username', password='password')    # 执行数据库操作    cursor = conn.cursor()    cursor.execute("SELECT column1, column2 FROM your_table")    result = cursor.fetchall()    # 处理查询结果    for row in result:        # 处理数据except pymssql.Error as e:    print("Database Error:", e)finally:    # 关闭连接    if conn:        conn.close()
  • 获取查询结果的列信息

如果你需要获取查询结果的列信息,如列名、数据类型等,可以使用cursor.description属性。

# 创建游标对象cursor = conn.cursor()# 执行查询cursor.execute("SELECT column1, column2 FROM your_table")# 获取列名column_names = [column[0] for column in cursor.description]# 获取列类型column_types = [column[1] for column in cursor.description]# 处理查询结果result = cursor.fetchall()for row in result:    for name, value in zip(column_names, row):        print(f"{name}: {value}")# 关闭游标cursor.close()
  •  处理查询结果中的NULL值

在查询结果中,某些列的值可能为NULL。pymssql将NULL值表示为Python中的None。你可以使用条件语句来处理查询结果中的NULL值。

cursor.execute("SELECT column1, column2 FROM your_table")result = cursor.fetchall()for row in result:    column1_value = row[0] if row[0] is not None else 'N/A'    column2_value = row[1] if row[1] is not None else 'N/A'    # 处理数据
  •  执行存储过程并获取输出参数

如果你需要执行MSSQL数据库中的存储过程,并获取输出参数的值,可以使用pymssql提供的callproc()方法。使用callproc()方法执行名为your_stored_procedure_name的存储过程,并传递参数param1param2。然后,可以使用getoutputparams()方法获取输出参数的值。

# 创建游标对象cursor = conn.cursor()# 执行存储过程cursor.callproc('your_stored_procedure_name', (param1, param2))# 获取输出参数的值output_param1 = cursor.getoutputparams()[0]output_param2 = cursor.getoutputparams()[1]# 关闭游标cursor.close()
  •  批量更新数据

如果你需要批量更新数据库中的数据,可以使用pymssql的executemany()方法。

# 创建游标对象cursor = conn.cursor()# 定义更新语句和数据update_query = "UPDATE your_table SET column1 = %s WHERE id = %s"data = [('new_value1', 1), ('new_value2', 2), ('new_value3', 3)]# 执行批量更新cursor.executemany(update_query, data)# 提交事务conn.commit()# 关闭游标cursor.close()
  •  使用with语句自动管理连接和事务

使用with语句可以更方便地管理数据库连接和事务,确保资源的正确释放和事务的提交或回滚。

# 使用with语句管理连接和事务with pymssql.connect(server='server_name', database='database_name', user='username', password='password') as conn:    # 创建游标对象    cursor = conn.cursor()    try:        # 执行数据库操作        cursor.execute("INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2')")        cursor.execute("UPDATE your_table SET column1 = 'new_value' WHERE id = 1")        # 提交事务        conn.commit()    except Exception as e:        # 回滚事务        conn.rollback()        print("Error:", e)    # 关闭游标    cursor.close()
  •  异步操作

如果你需要执行异步的MSSQL数据库操作,pymssql提供了对异步IO的支持。可以使用pymssql.connect()asynchronous=True参数来创建异步连接,以及cursor.execute()as_dict=True参数来执行异步查询并返回字典格式的结果。使用asyncio模块创建了一个异步的主函数main(),在其中创建了异步连接和游标,并执行了异步查询。最后,我们使用事件循环运行异步任务。

import asyncioimport pymssqlasync def main():    # 创建异步连接    conn = await pymssql.connect(server='server_name', database='database_name', user='username', password='password', asynchronous=True)    # 创建异步游标    cursor = conn.cursor(as_dict=True)    # 执行异步查询    await cursor.execute("SELECT * FROM your_table")    # 获取结果    result = await cursor.fetchall()    # 处理查询结果    for row in result:        # 处理数据    # 关闭游标和连接    await cursor.close()    await conn.close()# 创建事件循环并运行异步任务loop = asyncio.get_event_loop()loop.run_until_complete(main())
  • 使用连接池

连接池是一种用于管理数据库连接的技术,它可以提高应用程序的性能和可扩展性。pymssql支持使用连接池来管理数据库连接。使用连接池可以减少连接的创建和销毁开销,并提供连接的复用,从而提高应用程序的性能和可扩展性。

from pymssql import pool# 创建连接池pool = pool.ConnectionPool(server='server_name', database='database_name', user='username', password='password', max_connections=5)# 从连接池获取连接conn = pool.get_connection()# 执行数据库操作cursor = conn.cursor()cursor.execute("SELECT * FROM your_table")result = cursor.fetchall()# 处理查询结果for row in result:    # 处理数据# 关闭游标和连接cursor.close()conn.close()

来源地址:https://blog.csdn.net/book_dw5189/article/details/131278795

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python中的pymssql操作MSSQL数据库

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python调用pymssql包操作SqlServer数据库的实现

之前的文章介绍了python抓取网页数据并将数据保存到本地excel文件,后续可以将数据保存到数据库(SqlServer、mysql等)中,本文学习python中操作SqlServer数据库的基本用法,后续将从网页中抓取的数据保存到SqlS
2022-06-13

python如何调用pymssql包操作SqlServer数据库

本篇内容介绍了“python如何调用pymssql包操作SqlServer数据库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!pymssql
2023-07-02

Python的数据库操作

使用原生SQL语句进行对数据库操作,可完成数据库表的建立和删除,及数据表内容的增删改查操作等。其可操作性很强,如可以直接使用“show databases”、“show tables”等语句进行表格之外的部分操作。Centos7远程操作数据
2023-01-31

python操作数据库

游标  在stored Routines调用中开的一个缓冲区,用于存放SQL调用的结果集。(结果集是只读的)   意味着我们的查询可以返回一个文档也可以返回一个游标去指向一个结果集,而后通过游标的切换而获取每个结果   Python连接数
2023-01-31

Python中对数据库的操作详解

今天简单说说MySQL,我们存储数据,直接用本地文件即可,但是,本地文件不利于存放海量数据,也不利于用程序对文件的数据进行查询与管理,我们可以使用数据库
2023-02-20

python操作mysql数据库

一、数据库基本操作 1. 想允许在数据库写中文,可在创建数据库时用下面命令 create database zcl charset utf8; 2. 查看students表结构 desc students; 3. 查看创建students表
2022-06-04

python 操作MySQL数据库

1.connectdef conn(ip,user,password,database): con = mdb.connect(ip,user,password,database) cur = con.cursor() r
2023-01-31

Python 操作 MySQL数据库

开发环境与配置win_x64Ubuntu14.04Python3.xpip安装pymysql模块 直接使用pip安装 pip install pymysql win64上直接在cmd中执行 连接本地数据库使用模块pymysql连接数据库本地
2022-05-30

Python对数据库操作

Windows下安装MySQL-python下载地址:https://pypi.python.org/pypi/MySQL-python/1.2.5 安装到系统即可。linux下安装MySQL-python以连接MySQL:下载地址:htt
2022-06-04

Python操作redis数据库

前言:这两天的事情不多,为了避免之前学习的一点点Python知识遗忘,我在Github上找了一些小项目跟着实践。之前的工作有写过相关的Python处理redis处理数据的脚本,但之前没有养成记录积累的习惯,所以~~~~(遗忘了),所以趁此机
2023-01-31

python操作sybase数据库

python 对于数据库的使用如下# 打开数据库连接#dbName指的是具体数据库的名称,例如mysql 的一个模块为mysqldbdb = dbName.connect("localhost","testuser","test123","
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录