Python毗连SQL SEVER数据库全流程

打印 上一主题 下一主题

主题 863|帖子 863|积分 2589

背景介绍

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

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


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

pymssql是Python毗连SQL Server数据库的一个库,可以通过pip命令举行安装。在命令行中输入以下命令即可安装:
  1. 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” 大概其他值)。
  1. import pymssql
  2. server = '(local)'
  3. database = '订单信息'
  4. username = 'sa'
  5. password = '123456'
  6. # 连接到数据库
  7. conn = pymssql.connect(server=server, user=username, password=password, database=database,tds_version="7.0")#最后一个参数不是必须的
  8. # 创建游标对象
  9. cursor = conn.cursor()
  10. print('连接成功!')
  11. # 关闭数据库连接
  12. conn.close()
复制代码
四、数据导入函数

我们乐成毗连了数据库以后,可以很方便的导出导入数据,以下是一个将数据导入数据库的函数实现
  1. #coding=utf-8
  2. import time
  3. import pymssql
  4. import pandas as pd
  5. def insert_data_to_sql(df, server, database, username, password, table_name,mode='Overlay'):
  6.     # 连接到数据库
  7.     conn = pymssql.connect(server=server, user=username, password=password, database=database)
  8.     # 创建游标对象
  9.     cursor = conn.cursor()
  10.     # 获取 DataFrame 对象的字段名和数据类型
  11.     columns = list(df.columns)
  12.     dtypes = df.dtypes
  13.     if mode=='Overlay':
  14.         try:
  15.         #覆盖模式
  16.             cursor.execute("DROP TABLE {}".format(table_name))
  17.         except:
  18.             print('表不存在,直接创建……')
  19.         # 构造创建表的 SQL 语句
  20.         create_table_sql = f'CREATE TABLE [{table_name}] ('
  21.         for col_name, col_type in zip(columns, dtypes):
  22.             if col_type == 'int64':
  23.                 create_table_sql += f'[{col_name}] BIGINT,'
  24.             elif col_type == 'float64':
  25.                 create_table_sql += f'[{col_name}] FLOAT,'
  26.             elif col_type== 'datetime64[ns]' or '时间' in col_name or '日期' in col_name:
  27.                 create_table_sql += f'[{col_name}] DATETIME2(0),'
  28.             elif col_type == 'date':
  29.                 create_table_sql += f'[{col_name}] DATE,'
  30.             else:
  31.                 create_table_sql += f'[{col_name}] NVARCHAR(max),'
  32.         create_table_sql = create_table_sql.rstrip(',') + ');'
  33.         cursor.execute(create_table_sql)
  34.     # 将 DataFrame 转换成元组列表
  35.     data = [tuple(row) for row in df.fillna(0).values.tolist()]
  36.     # 构造插入数据的 SQL 语句
  37.     insert_sql = f'INSERT INTO [{table_name}] ('
  38.     insert_sql += ','.join([f'[{col_name}]' for col_name in columns]) + ') VALUES ('
  39.     insert_sql += ','.join(['%s'] * len(columns)) + ');'
  40.     # 将数据插入到数据库
  41.     cursor.executemany(insert_sql, data)
  42.     # 提交事务
  43.     conn.commit()
  44.     # 关闭数据库连接
  45.     conn.close()
  46.    # 数据库连接参数
复制代码
以上是python毗连SQL SEVER数据库的全部流程,如果你遇到任何题目,欢迎评论区留言~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小秦哥

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表