python中的pymssql操作MSSQL数据库

这篇具有很好参考价值的文章主要介绍了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 = 10
page_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 pymssql

try:
    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 pymssql

try:
    # 连接数据库
    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 asyncio
import pymssql

async 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支持使用连接池来管理数据库连接。使用连接池可以减少连接的创建和销毁开销,并提供连接的复用,从而提高应用程序的性能和可扩展性。文章来源地址https://www.toymoban.com/news/detail-489791.html

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()

到了这里,关于python中的pymssql操作MSSQL数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#操作MSSQL数据库 -增删改查

    要在C#中连接到Microsoft SQL Server数据库(MSSQL),你可以使用.NET Framework提供的System.Data.SqlClient命名空间中的类。 以下是一个简单的示例代码,展示了如何在C#中使用MSSQL数据库链接: 在上述代码中,你需要替换 serverName 、 databaseName 、 userName 和 password 为你实际的数据库服务器

    2024年02月10日
    浏览(38)
  • 【SQL Server】数据库开发指南(二)MSSQL数据库开发对于库、表、数据类型、约束等相关操作

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2023年04月09日
    浏览(342)
  • 如何利用Python中的pymysql库来操作Mysql数据库,看这篇就够啦~

     为了使python连接上数据库,你需要一个驱动,这个驱动是用于与数据库交互的库,本文是向大家介绍了如何利用python中的pymysql库来操作mysql数据库。 1、什么是pymysql? pymysql是从python连接到mysql数据库服务器的接口, 简单理解就是,pymysql是python操作mysql数据库的三方模块,可

    2024年02月06日
    浏览(57)
  • python操作数据库

    首先安装数据插件 数据库的插入

    2024年02月13日
    浏览(52)
  • Python——数据库操作

    目录 (1)安装Flask-SQLAlchemy (2)使用Flask-SQLAlchemy操作数据库 (3)连接数据库  •创建数据表 •增加数据 •查询数据  •更新数据 •删除数据 Flask-SQLAlchemy是Flask中用于操作关系型数据库的扩展包 ,该扩展包内部集成了SQLAlchemy,并简化了在Flask程序中使用SQLAlchemy操作数据

    2024年02月04日
    浏览(58)
  • Python --数据库操作

    目录 1, mysql 1-1, mysql驱动 1-2, 连接mysql 1-3, 执行sql语句 1-4, 数据表操作 1-4-1, 创建数据表 1-4-2, 查询数据表 1-4-3, 修改数据表 1-4-4, 删除数据表 1-5, 修改数据表内容 1-5-1, 插入数据 1-5-2, 查询数据 1-5-3, 获取结果集 1-5-4, 更新数据 1-5-5, 删除数据 1-6, 断开mys

    2024年02月11日
    浏览(43)
  • 【100天精通python】Day30:使用python操作数据库_数据库基础入门

     专栏导读  专栏订阅地址: https://blog.csdn.net/qq_35831906/category_12375510.html 1.1 什么是数据库?         数据库是一个结构化存储和组织数据的集合,它可以被有效地访问、管理和更新。数据库的目的是为了提供一种可靠的方式来存储和管理大量的数据,以便用户和应用程序

    2024年02月13日
    浏览(61)
  • Python之数据库操作(连接数据库,增删改查操作,易错点理解)

    文章目录 前言 一、Python之数据库操作 二、 pymysql 安装 三、pymysql 包引入  连接数据库 创建游标 执行sql数据 - 增删改查 要获取查询结果数据 关闭游标,关闭数据库连接 总结 记录:Python操作数据库的步骤,不容易理解的地方。 学习地址: python与各大数据库的连接: http:/

    2023年04月16日
    浏览(57)
  • Python 操作 MySQL 数据库

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。 Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase 你可以访问Python数据库接口及API查看详细的支

    2024年02月14日
    浏览(41)
  • Python——操作MySQL数据库

    😊学习永无止境,记得每天学习新的知识!! 在很多业务场景中,我们或多或少都要对数据库上的数据进行的一系列操作, 包括读取数据、写数据、更新或修改数据、删除数据 等。这些操作可以通过编写SQL语句来实现,也可以通过使用数据库管理系统提供的API接口来实现。

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包