使用的是 pymssql 库,这个库的详细用法参照博客(博客里也有官方文档,英语好的可以直接看):python pymssql — pymssql模块使用指南_夏日白云的博客-CSDN博客
我目前的需求只是使用 Python 连接数据库写查询语句就好了,所以没有详细学习,只看了看几个需要用到的相关方法并记录下来
import pymssql
serverip='xxx'
username='xxx'
password='xxx'
conn = pymssql.connect(serverip , username , password, "CRM",charset='GBK')
# 有中文,所以用了GBK编码形式
if conn:
print('成功')
cursor()
在连接建立成功后,通过 cursor() 获得一个 cursor 对象,熟悉数据库的应该清楚这个单词的意思是游标,游标在数据库里意味着一个指向查询结果集的指针,后面与数据库的交互主要是通过Cursor对象进行的:
cursor =conn.cursor()
execute(' sql str ')
通过 execute 方法执行 sql 语句
cursor.execute("SELECT * from CRM where CUSTOMER='0208100200000921' and TXNDATE>='2022-6-1'ORDER BY TXNDATE")
fetchall()、fetchone()
都是以元组形式返回查询结果,区别:
- 如果查询结果是单条数据:fetchone得到的单条数据的元组(元组内是元素);如果查询结果是多条数据:fetchone默认是结果中的第一条数据构成的元组;
- 如果查询结果是单条数据:fetchall得到的是由单个元组组成的列表(列表内含元组),如果查询结果是多条数据,fetchall得到的是由多个元组组成的列表;
-
results =cursor.fetchall()
cursor.description 属性
cursor.description 属性返回一个由元组组成的序列。每个元组描述一列的属性信息,其中包含以下属性:(其他参数未确定,为None)
- name:列名
- type_code:列数据类型(代码形式)
close()
关闭链接并释放资源
可以转化为dataframe进行分析
通过 cursor.description 设置列名
import pandas as pd
data=pd.DataFrame(results,columns=[i[0] for i in cursor.description])
得到dataframe:
UPTIME SEQUENCE VOUCHNUM ... CPTS CRM_ERR DISCREM
0 0601200671384300 2 102 ... 15.98 None None
1 0601200671384304 4 102 ... 5.52 None None
2 0602200671601785 2 126 ... 14.28 None None