Python使用pymssql连接SQL SEVER数据库全流程

 更新时间:2023年12月29日 12:50:55   作者:幻影123!  
SQL Server是微软推出的重量级的数据库,目前有多个版本,如2000、2008、2012等,下面这篇文章主要给大家介绍了关于Python使用pymssql连接SQL SEVER数据库的相关资料,需要的朋友可以参考下

背景介绍

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

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

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

一、安装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 pymssql

server = '(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 pd

def 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.dtypes
    if 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使用pymssql连接SQL SEVER数据库的文章就介绍到这了,更多相关Python连接SQLSEVER数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈Python中数据解析

    浅谈Python中数据解析

    本文给大家介绍的是Python中的数据解析的集中方式,包括列表解析、字典解析、集合解析,并附上相关示例,有需要的小伙伴可以参考下。
    2015-05-05
  • python dict转换成json格式的实现

    python dict转换成json格式的实现

    本文主要介绍了python dict转换成json格式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • Python实现原神抽卡的方法

    Python实现原神抽卡的方法

    这篇文章主要为大家介绍了Python实现原神抽卡的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • python中字符串拼接的几种方法及优缺点对比详解

    python中字符串拼接的几种方法及优缺点对比详解

    在 Python 中,字符串拼接是常见的操作,Python 提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需要的朋友可以参考下
    2025-03-03
  • python UNIX_TIMESTAMP时间处理方法分析

    python UNIX_TIMESTAMP时间处理方法分析

    这篇文章主要介绍了python UNIX_TIMESTAMP时间处理方法,结合实例形式分析了Python针对UNIX_TIMESTAMP时间的常见运算技巧,需要的朋友可以参考下
    2016-04-04
  • Python如何使用seleniumwire接管Chrome查看控制台中参数

    Python如何使用seleniumwire接管Chrome查看控制台中参数

    文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2025-01-01
  • Python利用Prim算法生成迷宫

    Python利用Prim算法生成迷宫

    普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。这篇文章将利用Prim算法实现迷宫的生成,感兴趣的可以了解一下
    2023-01-01
  • 教你怎么用python selenium实现自动化测试

    教你怎么用python selenium实现自动化测试

    今天带大家学习怎么用python selenium实现自动化测试,文中有非常详细的介绍及代码示例,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • 一文搞懂python 中的迭代器和生成器

    一文搞懂python 中的迭代器和生成器

    这篇文章主要介绍了python 中的迭代器和生成器简单介绍,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 理解深度学习之深度学习简介

    理解深度学习之深度学习简介

    这篇文章主要是关于深度学习的简介,对大家学习了解机器深度学习有一定的帮助,以后会持续更新本系列,希望能为大家带来一些收货,让我们一起来看看下面的文章吧
    2021-04-04

最新评论