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数据库的主要内容,如果未能解决你的问题,请参考以下文章

java连接sqlserver数据简单操作

Python操作sqlserver 2000

python3操作sqlserver,查询数据统计导出csv

Java连接并操作SQLServer数据库

第十二章:使用C语言(Python语言)操作Sqlserver2019数据库

初学 go 入门-案例-教程-记录(13)orm 框架 Gorm 简单案例 - 连接sqlserver,并查询数据