Python 连接到 Microsoft SQL 数据库

模块

import pyodbc class SQLServerOperations: def __init__(self, server, database, uid, pwd): self.server = server self.database = database self.uid = uid self.pwd = pwd self.connection = None def connect(self): try: self.connection = pyodbc.connect(f'DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={self.server};DATABASE={self.database};UID={self.uid};PWD={self.pwd}') print(f"连接数据库成功!") except pyodbc.Error as e: print(f"连接数据库时出错: {e}") def execute_query(self, query): if not self.connection: self.connect() cursor = self.connection.cursor() try: cursor.execute(query) # self.connection.commit() return cursor.fetchall() except pyodbc.Error as e: print(f"执行查询时出错: {e}") finally: cursor.close() def insert_data(self, table_name, data_dict): """ 插入数据到指定表 参数: table_name (str): 要插入数据的表名 data_dict (dict): 包含列名和对应值的字典 示例: data = {'column1': 'value1', 'column2': 'value2'} insert_data('your_table', data) """ if not self.connection: self.connect() columns = ', '.join(data_dict.keys()) values = ', '.join(['?' for _ in data_dict]) query = f"INSERT INTO {table_name} ({columns}) VALUES ({values})" cursor = self.connection.cursor() try: cursor.execute(query, list(data_dict.values())) self.connection.commit() except pyodbc.Error as e: print(f"插入数据时出错: {e}") finally: cursor.close() def update_data(self, table_name, condition, data_dict): """ 更新指定表中的数据 参数: table_name (str): 要更新数据的表名 condition (str): 更新的条件 data_dict (dict): 包含要更新的列名和对应新值的字典 示例: condition = "id = 1" data = {'column1': 'new_value1', 'column2': 'new_value2'} update_data('your_table', condition, data) """ if not self.connection: self.connect() set_values = ', '.join([f"{column} =?" for column in data_dict]) query = f"UPDATE {table_name} SET {set_values} WHERE {condition}" cursor = self.connection.cursor() try: params = list(data_dict.values()) cursor.execute(query, params) self.connection.commit() except pyodbc.Error as e: print(f"更新数据时出错: {e}") finally: cursor.close() def close_connection(self): if self.connection: self.connection.close()

示例

from sql_server_operations import SQLServerOperations # import logging # 创建操作对象 sql_ops = SQLServerOperations('127.0.0.1', 'databasename','user', 'password') # 连接数据库 sql_ops.connect() # 执行查询 query = "SELECT * FROM your_table WHERE column_name = value" # 替换 your_table 为实际表名,column_name 和 value 为实际的列名和值 # logging.info(f"Executing query: {query}") # 记录正在执行的查询 results = sql_ops.execute_query(query) if results is None: logging.error("Query returned no results or an error occurred.") # 记录查询没有结果或出错 else: for row in results: print(row) # 插入数据示例 data_to_insert = {'column1': 'value1', 'column2': 'value2'} sql_ops.insert_data('your_table', data_to_insert) # 更新数据示例 condition = "id = 1"data_to_update = {'column1': 'new_value1', 'column2': 'new_value2'} sql_ops.update_data('your_table', condition, data_to_update) # 关闭连接 sql_ops.close_connection()

  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    556 引用 • 675 回帖 • 1 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    107 引用 • 153 回帖
  • OnlyOffice
    4 引用 • 20 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖
  • Follow
    4 引用 • 12 回帖 • 13 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 32 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 17 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 183 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    189 引用 • 1057 回帖 • 4 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 3 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3455 回帖 • 161 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    173 引用 • 3849 回帖 • 1 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖 • 1 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 643 关注
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    84 引用 • 324 回帖 • 1 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 486 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 9 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 2 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    56 引用 • 85 回帖 • 1 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 677 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 547 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    76 引用 • 258 回帖 • 627 关注
  • OneDrive
    2 引用 • 3 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    267 引用 • 666 回帖 • 1 关注