目录
  • 实验环境:
  • 基本步骤:
    • 安装pymssql模块
    • 编写代码
  • 错误1:
    • 报错
    • 原因
  • 错误2:
    • 总结

      实验环境:

      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 

      一文教会你用python连接并简单操作SQLserver数据库

      基本步骤:

      安装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()

      原始:

      一文教会你用python连接并简单操作SQLserver数据库

      处理后:

      一文教会你用python连接并简单操作SQLserver数据库

      插入

      #插入语句
      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:

      报错

      一文教会你用python连接并简单操作SQLserver数据库

      原因

      没有把TCP/IP协议打开

      查看TCP端口位置:

      一文教会你用python连接并简单操作SQLserver数据库

      保证TCP/IP开启:

      开启之后,服务,重新启动服务

      一文教会你用python连接并简单操作SQLserver数据库

      一文教会你用python连接并简单操作SQLserver数据库

      错误2:

      出现查询结果乱码:

      解决办法:

      查看sqlserver的编码:

      select COLLATIONPROPERTY('chinese_PRC_Stroke_CI_AI_KS_WS','CodePage')

      一文教会你用python连接并简单操作SQLserver数据库

      查询结果:

      936 简体中文gbk

      950 繁体中文BIG5

      437 加拿大/美国 英语

      932 日文

      949 韩文

      866 俄文

      总结

      声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。