python 链接sqlserver 写接口实例


Posted in Python onMarch 11, 2020

我是使用pymssql完成的sqlserver,首先下载符合版本的pymssql的whl,然后安装,在pycharm的default setting->project Interpreter中确定项目的Interpreter有pymssql,然后就开始了~

` # -*- coding:utf-8 -*-
import hashlib
import hmac
import json
import pymssql
from requests import Response
from rest_framework import status, generics
from rest_framework.decorators import api_view
from rest_framework.views import APIView
from django.http import HttpResponse, HttpRequest
@api_view(['GET', 'POST'])
def userlogin(req,format=None):
  ms = MSSQL(host="你的IP地址", user="你的数据库账号", pwd="你的数据库密码", db="你的数据库名")
  if req.method == 'GET':
    username = req.GET['username']
    password = req.GET['password']
  elif req.method == 'POST':
    username= req.POST['username']
    password = req.POST['password']
  newsql = "select * from System_Users where Mobile = '"+username+"'"
  print(newsql)
  reslist = ms.ExecQuery(newsql.encode('utf-8'))
  # //验证password加密后==LoginPwd
  print(password)
  print(reslist[0].get("LoginKey"))
  if Encrypt(password,reslist[0].get("LoginKey"))==reslist[0].get("LoginKey"):
    reslist =json_success(reslist)
  else:
    reslist =json_error(reslist)
  # meizis = System_Users.objects.all()
  # serializer = MeiziSerializer(reslist, many=True)
  # return Response(serializer.data)
  return HttpResponse(json.dumps(reslist, default=lambda obj: obj.__dict__), content_type='application/json')
  # return reslist

def Encrypt(password="",salt = ""):
  clearBytes=[]
  hasheByte=[]
  # # encoding = unicode
  # clearBytes= bytes(salt.lower().strip()+password.strip(),encoding='Unicode')
  # salt = crypt.mksalt(crypt.METHOD_SHA512)
  # 然后再进行数据加密:
  # hasheByte = crypt.crypt("helloworld", salt)
  # hasheByte =crypt.crypt(clearBytes, salt)
  # password = hmac.new(key=clearBytes, msg=password)
  # 待加密信息
  str =salt.lower().strip()+password.strip()
  # 创建md5对象
  hl = hashlib.md5()
  # Tips
  # 此处必须声明encode
  # 若写法为hl.update(str) 报错为: Unicode-objects must be encoded before hashing
  print('MD5加密前为 :' + str)
  hl.update(str.encode(encoding='utf-16'))
  print('MD5加密后为 :' + hl.hexdigest())
  hl.update(str.encode(encoding='UTF-8'))
  print('MD5加密后为 :' + hl.hexdigest())
  hl.update(str.encode(encoding='GBK'))
  print('MD5加密后为 :' + hl.hexdigest())
  hl.update(str.encode(encoding='GB2312'))
  print('MD5加密后为 :' + hl.hexdigest())
  print(password)
  return password


def json_success(data, code=200, foreign_penetrate=False, **kwargs):
   data = {
     "status": code,
     "msg": "成功",
     "data": data,
   }
   print(data)
   return data

def json_error(error_string="失败", code=500, **kwargs):
   data = {
      "status": code,
      "msg": error_string,
      "data": {}
    }
   data.update(kwargs)
   return data

class MSSQL:
  def __init__(self, host, user, pwd, db):
    self.host = host
    self.user = user
    self.pwd = pwd
    self.db = db
def __GetConnect(self):
  if not self.db:
    raise (NameError, "没有设置数据库信息")
  self.conn = pymssql.connect(host=self.host, user=self.user, password=self.pwd, database=self.db, charset="GBK")
  cur = self.conn.cursor()
  if not cur:
    raise (NameError, "连接数据库失败")
  else:
    return cur

def ExecQuery(self, sql):
  cur = self.__GetConnect()
  cur.execute(sql)
  resList = cur.fetchall()
  col_names = [desc[0] for desc in cur.description]

  result = []
  for row in resList:
    objDict = {}
    # 把每一行的数据遍历出来放到Dict中
    for index, value in enumerate(row):
      index, col_names[index], value
      objDict[col_names[index]] = value
    result.append(objDict)

  # 查询完毕后必须关闭连接
  self.conn.close()
  return result

def ExecNonQuery(self, sql):
  cur = self.__GetConnect()
  cur.execute(sql)
  self.conn.commit()
  self.conn.close()

然后设置好url就ok了,这是在Django框架下,fask框架下链接数据库模块依然可以使用

补充知识:使用pycharm连接数据库---Sqlalchemy

初识sqlalchemy

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,String,INTEGER
#1.创建引擎
eng = create_engine("mysql+pymysql://root:admin@localhost/homework?charset=utf8")
print(eng)
#2.创建基类
Base = declarative_base()
#3.创建类(模型)
class Student(Base):
__tablename__="student1"#指定表格名称
id = Column(INTEGER,primary_key=True,autoincrement=True)
name = Column(String(32),nullable=False)#非空约束
email = Column(String(32),unique=True)#唯一约束

#4.创建表格
Base.metadata.create_all(eng)
#5删除表格
Base.metadata.drop_all(eng)

创建出来的student1表

python 链接sqlserver 写接口实例

使用Sqlalchemy四部曲:

1、使用create_engine()#连接数据库

2、Base = declarative_base()# 生成orm基类,用于创建classes

3、Base.metadata.create_all(engine) #关联engine使用metadata创建数据库表

4、使用 session = Session(engine) #创建一个会话,便于后面对数据库进行实际操作

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,String,INTEGER
from sqlalchemy.orm import sessionmaker
#1.创建引擎
eng = create_engine("mysql+pymysql://root:admin@localhost/homework?charset=utf8")
#2.创建基类
Base = declarative_base()
#3.创建类(模型)
class Student(Base):
  __tablename__ = "student2"
  id = Column(INTEGER,primary_key=True,autoincrement=True)
  name = Column(String(32), nullable=False) # 非空约束
  email = Column(String(32), unique=True) # 唯一约束
#4.创建表格
Base.metadata.create_all(eng)
#5.创建session
Session = sessionmaker(bind=eng)
session = Session()#创建session对象,相当于pymysql中的conn
#增加记录
# student = Student(name='刘备',email='120@qq.com')#创建student的对象
# session.add(student)#添加记录

# #批量增加
# session.add_all(
#   [
# Student(name='张飞',email='110@qq.com'),
# Student(name='悟空',email='111@qq.com'),
# Student(name='宫本',email='112@qq.com'),
# Student(name='赵云',email='113@qq.com'),
#   ]
# )

#查询操作
#first方法查询出第一条记录
# ret = session.query(Student).first()
# print(ret.id,ret.name,ret.email)
# #get方法查询指定记录
# student = session.query(Student).get(ident=2)#使用唯一标识ident不写也行查询第几条记录
# print(student.id,student.name,student.email)
#
# student = session.query(Student).filter(Student.id>2)#filter过滤相当于条件
# for stu in student:#这里的student是个对象,所以需要把他遍历出来显示查询出来的数据
#   print(stu.id,stu.name,stu.email)

# #删除操作
# # student = session.query(Student).filter(Student.id<2).delete()
# # #方式一此方法可删除多个主要是因为filter,他是条件吗满足他的都可以被删除
# student1 = session.query(Student).get(2)
# session.delete(student1)#方式二

# #修改操作
#单条修改
# student3 =session.query(Student).first()
# student3.name='百度'
# student3.email='www.baidu.com'
#指定条件修改
student4 =session.query(Student).filter(Student.id ==3).update({Student.name:'王炸',Student.email:'666@qq.com'})
session.commit()#提交事务
session.close()

python 链接sqlserver 写接口实例

python 链接sqlserver 写接口实例

以上这篇python 链接sqlserver 写接口实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python双向链表实现实例代码
Nov 21 Python
零基础写python爬虫之爬虫的定义及URL构成
Nov 04 Python
Python队列的定义与使用方法示例
Jun 24 Python
Python自定义简单图轴简单实例
Jan 08 Python
用Python获取摄像头并实时控制人脸的实现示例
Jul 11 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
Nov 26 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
django前端页面下拉选择框默认值设置方式
Aug 09 Python
Django CBV模型源码运行流程详解
Aug 17 Python
Python多分支if语句的使用
Sep 03 Python
Django如何与Ajax交互
Apr 29 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 #Python
python读取当前目录下的CSV文件数据
Mar 11 #Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 #Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 #Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 #Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 #Python
GDAL 矢量属性数据修改方式(python)
Mar 10 #Python
You might like
adodb与adodb_lite之比较
2006/12/31 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
js中判断控件是否存在
2010/08/25 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python 获取et和excel的版本号
2009/04/09 Python
Python数组条件过滤filter函数使用示例
2014/07/22 Python
详解Python中is和==的区别
2019/03/21 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
Django框架反向解析操作详解
2019/11/28 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
交通安全教育制度
2014/02/02 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
支部书记四风对照材料
2014/08/28 职场文书
学风建设演讲稿
2014/09/12 职场文书
实习计划书范文
2015/01/16 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
入队仪式主持词
2015/07/04 职场文书
关于环保的宣传稿
2015/07/23 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
JAVA API 实用类 String详解
2021/10/05 Java/Android
Java 多态分析
2022/04/26 Java/Android