Python连接SQL SEVER数据库全流程

server/2025/2/28 13:05:40/

背景介绍

在数据分析领域,经常需要从数据库中获取数据进行分析和处理。而SQL Server是一种常用的关系型数据库管理系统,因此学习如何使用Python连接SQL Server数据库并获取数据是非常有用的。
在这里插入图片描述

以下是Python使用pymssql连接SQL Server数据库的全流程:

  • 安装pymssql
  • 本地账号设置
  • 脚本连接
  • 数据导入函数实现

sql_16">一、安装pymssql

pymssql是Python连接SQL Server数据库的一个库,可以通过pip命令进行安装。在命令行中输入以下命令即可安装:

pip install pymssql

二、本地账号设置

1、设置sa账户的登录密码

在SQL Server Management Studio中,展开“安全性”文件夹,右键单击“登录名”并选择“新建登录名”。在弹出的对话框中,输入登录名“sa”,选择“SQL Server身份验证”,设置密码并确保“登录”选项卡下“默认数据库”为目标数据库。最后,在“状态”选项卡下选择“启用”并确保“允许连接”复选框被选中。

2、开启双重验证

在SQL Server Management Studio中,右键单击SQL Server实例名称并选择“属性”。在弹出的对话框中,选择“安全性”选项卡,将“身份验证”设置为“SQL Server和Windows身份验证模式”,并选择“应用”以保存更改。

3、开启TCP/IP本地服务

在SQL Server Configuration Manager中,展开“SQL Server网络配置”文件夹,右键单击“协议”文件夹并选择“新建协议”。选择“TCP/IP”协议,右键单击“TCP/IP”协议并选择“属性”。在弹出的对话框中,将“启用”设置为“是”,并确保“IP地址”选项卡下的“TCP动态端口”为空。然后,切换到“IPALL”选项卡,并将“TCP端口”设置为1433(或其他您想要的端口号)。保存更改并重启SQL Server服务。

完成以上步骤后,即可使用Python连接本地SQL Server数据库

三、脚本连接

做好以上的准备工作,用测试脚本连接(如果连接出错——b’DB-Lib error message 20002,试下在connect函数参数最后面加上tds_version=“7.0” 或者其他值)。

import pymssqlserver = '(local)'
database = '订单信息'
username = 'sa'
password = '123456'
# 连接到数据库
conn = pymssql.connect(server=server, user=username, password=password, database=database,tds_version="7.0")#最后一个参数不是必须的
# 创建游标对象
cursor = conn.cursor()
print('连接成功!')
# 关闭数据库连接
conn.close()

四、数据导入函数

我们成功连接了数据库以后,可以很方便的导出导入数据,以下是一个将数据导入数据库的函数实现

#coding=utf-8
import time
import pymssql
import pandas as pddef insert_data_to_sql(df, server, database, username, password, table_name,mode='Overlay'):# 连接到数据库conn = pymssql.connect(server=server, user=username, password=password, database=database)# 创建游标对象cursor = conn.cursor()# 获取 DataFrame 对象的字段名和数据类型columns = list(df.columns)dtypes = df.dtypesif mode=='Overlay':try:#覆盖模式cursor.execute("DROP TABLE {}".format(table_name))except:print('表不存在,直接创建……')# 构造创建表的 SQL 语句create_table_sql = f'CREATE TABLE [{table_name}] ('for col_name, col_type in zip(columns, dtypes):if col_type == 'int64':create_table_sql += f'[{col_name}] BIGINT,'elif col_type == 'float64':create_table_sql += f'[{col_name}] FLOAT,'elif col_type== 'datetime64[ns]' or '时间' in col_name or '日期' in col_name:create_table_sql += f'[{col_name}] DATETIME2(0),'elif col_type == 'date':create_table_sql += f'[{col_name}] DATE,'else:create_table_sql += f'[{col_name}] NVARCHAR(max),'create_table_sql = create_table_sql.rstrip(',') + ');'cursor.execute(create_table_sql)# 将 DataFrame 转换成元组列表data = [tuple(row) for row in df.fillna(0).values.tolist()]# 构造插入数据的 SQL 语句insert_sql = f'INSERT INTO [{table_name}] ('insert_sql += ','.join([f'[{col_name}]' for col_name in columns]) + ') VALUES ('insert_sql += ','.join(['%s'] * len(columns)) + ');'# 将数据插入到数据库cursor.executemany(insert_sql, data)# 提交事务conn.commit()# 关闭数据库连接conn.close()# 数据库连接参数

以上是python连接SQL SEVER数据库的全部流程,如果你遇到任何问题,欢迎评论区留言~


http://www.ppmy.cn/server/171297.html

相关文章

【FL0086】基于SSM和微信小程序的垃圾分类小程序

🧑‍💻博主介绍🧑‍💻 全网粉丝10W,CSDN全栈领域优质创作者,博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发…

在PyTorch使用UNet进行图像分割【附源码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

【01游戏——DFS】

题目 代码 #include <bits/stdc.h> using namespace std;const int N 11;int n; char g[N][N]; char ng[N][N]; bool Find false;bool check(int x, int y) //只用查最新的坐标相关的数据 {//连续长度不能超过2if(x - 2 > 1 && ng[x][y] ng[x-1][y] &…

react native和react、H5的区别

React Native、React 和 H5 是三种不同的技术栈&#xff0c;它们之间有很多相似之处&#xff0c;但也有很多关键的区别。下面是它们的主要区别&#xff1a; 1. React • 定义&#xff1a;React 是一个用于构建用户界面的 JavaScript 库&#xff0c;专注于构建 UI 组件。它允许…

OSI七层模型和TCP/IP四层模型形象实例

本章是对上一章《OSI七层模型和TCP/IP四层模型介绍》内容的形象实例说明&#xff0c;应该可以帮助记忆。 目录 1、OSI七层模型实例 1.1、应用层&#xff08;Application Layer&#xff09; 1.2、表示层&#xff08;Presentation Layer&#xff09; 1.3、会话层&#xff08…

python里面的numpy

NumPy&#xff08;Numerical Python&#xff09;是 Python 中用于科学计算的基础库&#xff0c;它提供了高性能的多维数组对象&#xff08;ndarray&#xff09;以及处理这些数组的各种工具。以下是对 NumPy 常见用法的详细讲解&#xff1a; 1. 安装与导入 在使用 NumPy 之前&…

C++性能优化常用技巧

一. 选择合适的数据结构 1.1 map与unordered_map的选择 如果仅仅只需要使用到快速查找的特性&#xff0c;那么unordered_map更加合适&#xff0c;他的复杂度是O(1)。如果还需要排序以及范围查找的能力&#xff0c;那么就选择map。 1.2 vector与list的选择 通常情况下&#…

常用的 Web API

1. Intersection API Interserction API 是一种用于异步检测模板元素月视口&#xff08;或者指定父元素&#xff09;交叉状态变化的浏览器原生接口&#xff0c;主要那个用于解决传统滚动监听性能差、实现复杂的问题&#xff0c;适用于懒加载、慢点曝光、无线滚动等场景。 2. …