python连接并简单操作SQLserver数据库
Posted 鲨鱼啵啵霸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python连接并简单操作SQLserver数据库相关的知识,希望对你有一定的参考价值。
python连接并简单操作SQLserver数据库
实验环境:
python版本3.9
Python 3.9.7 (tags/v3.9.7:1016ef3, Aug 30 2021, 20:19:38) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
SQLserver版本2019
exec xp_msver
基本步骤:
安装pymssql模块
#pip 安装pymssql (python3.6以上直接安装不上)
pip install pymssql
#在官网下载pymssql对应版本,在当前文件夹下
https://pypi.org/project/pymssql/
pip install pymssql-2.2.4-cp39-cp39-win_amd64.whl
编写代码
sqlserver.py
#coding=utf-8 #settng设置全局为utf—8格式
#导包
import pymssql
#创建连接字符串 (sqlserver默认端口为1433)
conn =pymssql.connect(host='localhost', #这里的host='_'可以用本机ip或ip+端口号
server="******",#本地服务器
port="1433",#TCP端口
user="sa",password="******",
database="******",
charset="GBK"
#这里设置全局的GBK,如果设置的是UTF—8需要将数据库默认的GBK转化成UTF-8
)
if conn:
print('连接数据库成功!')#测试是否连接上
查询
#查询语句
cursor =conn.cursor() #使用cursor()方法获取操作游标
sql_select="SELECT * FROM STUDENT" #数据库查询语句
cursor.execute(sql_select) #执行语句
results =cursor.fetchall() #获取所有记录列表
#print('原始:',end="")
#print(result) #后边有空格
for result in results:
result= list(result) #元组转化为列表
for res in range (len(result)):
if isinstance(result[res],str):
result[res]=result[res].replace(' ','')解决空格问题
result=tuple(result) #列表再转换为元组
print("处理后:",end="")
print(result)
#
conn.commit()
#关闭数据库
conn.close()
原始:
处理后:
插入
#插入语句
cursor =conn.cursor()
sql_insert="insert into student values(990031,'wang',20,'男','bb','aa')"
cursor.execute(sql_insert)
conn.commit()
conn.close()
更新
#更新语句
cursor =conn.cursor()
sql_update="update student set AGE=21 where SNO='990031' "
cursor.execute(sql_update)
conn.commit()
conn.close()
删除语句
#删除语句
cursor =conn.cursor()
sql_delete="delete from student where sno='990031'"
cursor.execute(sql_delete)
conn.commit()
conn.close()
增加表
#新建表
cursor =conn.cursor()
sql_create="""create table table_student(SNO int primary key not null,SNAME varchar(100),SDEPT varchar(100),BPLACE varchar(100))"""
cursor.execute(sql_create)
conn.commit()
conn.close()
错误1:
报错
原因
没有把TCP/IP协议打开
查看TCP端口位置:
保证TCP/IP开启:
开启之后,服务,重新启动服务
错误2:
出现查询结果乱码:
解决办法:
查看sqlserver的编码:
select COLLATIONPROPERTY('chinese_PRC_Stroke_CI_AI_KS_WS','CodePage')
查询结果:
936 简体中文gbk
950 繁体中文BIG5
437 加拿大/美国 英语
932 日文
949 韩文
866 俄文
java连接sqlserver数据简单操作
首先我们下载微软的JDBC驱动包
https://www.microsoft.com/en-us/download/details.aspx?id=11774
下载好后我们打开如下图
点击Unzip 解压出来,并且找到sqljdbc42这个文件,拿这个文件去配置环境变量,配置我就不多说了,配置好如下图
配置完成后,我们打开我们sqlserver的配置管理器,去配置我们的连接端口
找到Sql Server网络配置->MSSQLSERVER的协议,如果TCP/IP关闭了,请把它打开,在双击TCP/IP协议,选择IP地址选项卡把IP1和IP10的IP地址改成127.0.0.1,端口改成1433,是否活动改成是,其他默认,再把IPAII的TCP端口改成1433,修改完成后用TelnetOR netstat -an 命令看看端口打开没有 打开如下图
连接成功,接下来配置sqlserver里面的登陆用户,也可以自己添加一个,我这里就用默认的sa
登陆数据库,操作如下:安全性->登录名->右击sa选择属性,自己设置好密码,在右击服务器选择属性把如下圈圈打上
以上的全部配置好以后接下来我们就来编写代码了,打开我们的eclipse把jar导入进去
新建项目,新建个lib文件夹,把sqljdbc42拷贝进来,如下图
在右击它选择build path 在点第一个,导入以后上代码
package test; import java.sql.SQLException; import java.sql.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; public class demo { public static void main(String[] args) { String user = "sa"; String password = "admin"; Connection conn; Statement stmt; ResultSet rs; String url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=student_db;"; String sql = "select * from student"; try { // 连接数据库 conn = DriverManager.getConnection(url, user, password); // 建立Statement对象 stmt = conn.createStatement(); // 执行数据库查询语句 rs = stmt.executeQuery(sql); while (rs.next()) { String id = rs.getString("s_id"); String name = rs.getString("S_name"); float score = rs.getFloat("s_score"); String sex = rs.getString("s_sex"); System.out.println("学号 "+id+"姓名 "+name+"成绩 "+score+"性别 "+sex); } if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } if (conn != null) { conn.close(); conn = null; } } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } } }
以上是关于python连接并简单操作SQLserver数据库的主要内容,如果未能解决你的问题,请参考以下文章
python3操作sqlserver,查询数据统计导出csv