Python Web(Django)连接SQL SERVER

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: (开开心心每一天~ ---虫瘾师)   Python Web(Django) 与SQL SERVRE的连接————Come QQ群:607021567(里面有很多开源代码和资料,并且python的游戏也有) (一)、SQL SERVER的基本介绍(简单)————SQL 是用于访问和处理数据库的标准的计算机语言。

(开开心心每一天~ ---虫瘾师)

 

Python Web(Django) 与SQL SERVRE的连接————Come QQ群:607021567(里面有很多开源代码和资料,并且python的游戏也有)

(一)、SQL SERVER的基本介绍(简单)————SQL 是用于访问和处理数据库的标准的计算机语言。

(二)、Django框架——Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。

 

1、SQL SERVER 基本结构

  table---表:字段、记录;

   view---视图:是从一个或多个基本表中定义的虚表,相当于一个窗口,通过该窗口可以看到用户所需要的数据;

  stored procedure---存储过程:存储过程的存在独立于表,用户可以运用存储过程来完善应用程序;

  trigger---触发器:用户通过使用触发器来实现各种复杂的业务规则;

  indexes---索引:用户和角色:用户是指对数据库具有一定权限的使用者,角色是一组具有相同权限的用户集合;

 

这里Python Web(Django)需要主要用到的是  stored procedure---存储过程 。

stored procedure---存储过程————存储过程是SQL语句和控制语句的预编译集合,保存在数据库中,可以调用执行,并且允许用户声明变量.逻辑控制语句以及其他强大的编程功能。

我会将项目中详细用到的内容都会写下来。

 

2、Django框架 基本结构

 ---->主项目文件夹

  ----->工程文件夹

    主控文件: ----->settings.py ——主要控制你的静态文件,和python自带数据库,也可使用它来连接数据库

          ----->urls.py ——web前端通过后台需要访问的地址,并且静态文件的地址也是需要写在这里的 

          ----->wsgi.py ——服务器管理处

  ------>templates :模板文件夹,可以在创建一个脚本文件夹static

这里我们不需要用python创建后自带的连接数据库文件,因为这样要考虑到没有用软件来创建项目的人,他们的文件位置也可以改变,但是项目文件夹必须有一个。

连接sql server 需要自己写py文件。

----先要知道SQL SERVER的存储过程和表的实例:

首先创建SQL SERVER 的数据库和表,我就随便创建一个了

 

create table table_1
(
id int primary key identity(1,1) not null, name varchar(50) not null, age int not null )

因为是随便创建的表,所以都是默认下去的!接下来,是对存储过程。

新建存储过程:

create proc  xxxxx --存储过程名字
as
select * FROM table_1 --SQL 语句 go

创建完之后,我们的存储过程就可以根据我们前端需要来修改了,比如如果我们做个后台登录,或者成绩查询,都需要上传学生id,并且每一次查询的信息可以放在存储过程的临时表内,也可以直接返回。

列:

USE [my_sp]
GO
/****** Object: StoredProcedure [dbo].[my_sp_py] Script Date: 05/18/2018 15:24:28 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER proc [dbo].[my_sp_py] @userid int, @page int, @pagesize int as /* select * from table_1 */ SET NOCOUNT ON; declare @count int select @count =COUNT(*) from table_1 if @count > 0 begin create table #table --临时表的结构  ( id bigint, userid int, ctype nvarchar(30), Reduce nvarchar(10), num int, Remarks nvarchar(max), sum int, uptime datetime, ) declare @where_condition nvarchar(max) set @where_condition = '' if(@userid <>0) set @where_condition = @where_condition + ' and userid='+cast(@userid as varchar) declare @filedlist nvarchar(500) set @filedlist = 'id,userid,ctype,Reduce,num,Remark,sum,uptime' --需要insert 到表中的字段 declare @sql nvarchar(MAX) if @page>1 set @sql = 'SQL 语句' else set @sql = 'SQL 语句' --print @sql exec (@sql) --执行SQL 语句 select * from #table --返回的结果 end 

因为这个是页码和每一条数的控制,userid就是需要查询时候定义的id,到这里基本我们的存储过程就写完了!接下来就是python 连接SQL SERVER 并且访问数据库中的数据,你可以点击这里看简便的处理 连接方式 

首先,我们需要独立创建一个py文件,创建一个类 class sql_server:

MSSQL_INFO = {"hostname":"local","username":"local","password":"","dbname":"table_1"}

另外,因为web应用中可以使用多个sql,所以我们把数据连接的文件放在一个单独的py文件内!

模块:pyodbc--数据库连接 创建sqlmb.py文件

strconn= 'DRIVER={SQL Server};SERVER='+sql_server.MSSQL_INFO.get("hostname")+';DATABASE='+sql_server.MSSQL_INFO.get("dbname")+';UID='+sql_server.MSSQL_INFO.get("username")+';PWD='+sql_server.MSSQL_INFO.get("password") db = pyodbc.connect(strconn) return db

数据连接就到这里已经成功一半了,接下来就是我们项目中需要去访问数据库的数据了!

使用前要import 包名(sqlmb)

mssql_conn = sqlmb.mssqlserver_conn_db()
c = mssql_conn.cursor()
c.execute("{call my_sp_py (?,?,?)}", (userid,page,pagesize)) q = c.fetchone() #fetchall所有数据 c.commit()

q就是数据库中所返回的数据,也就是select所返回的内容!好了,django与sql server的处理基本就是这些内容!下次再见!

def basicinfo(request):
    logininfo = checkLogin(request)
    if logininfo and logininfo.get('loginuserid') != None and logininfo.get('loginuserid')!="": mssql_conn = common.mssqlserver_conn_db() cs = mssql_conn.cursor() cs.execute("{call my_sp_py (?,?,?)}", userid,page,pagesize) q = cs.fetchone() cs.commit() if (q and len(q) > 0): if q[0] != 0:   a = list(q) c = [] for i in range(0, len(a)): if a[i] == None: a[i] = "" c.append(a[i]) else: c.append(a[i]) logininfo['myname'] = c[1] logininfo['companyname'] = c[2] logininfo['myphone'] = c[3] logininfo['faxnum'] = c[4] logininfo['post'] = c[5] logininfo['tradetype'] = c[6] logininfo['vip'] = c[7] logininfo['industry'] = c[8] logininfo['province'] = c[9] logininfo['city'] = c[10] logininfo['county'] = c[11] logininfo['useraddress'] = c[12] cs.execute("{call infosearch_list_py (?)}", logininfo.get('loginuserid')) q = cs.fetchone() cs.commit() if (q and len(q) > 0): if q[1]: logininfo['LastLoginIP'] = q[1] else: logininfo['LastLoginIP'] = 0 if q[2]: logininfo['LoginCount'] = q[2] else: logininfo['LoginCount'] = 0 if q[3]: logininfo['LastLoginTime'] = q[3].strftime('%Y-%m-%d %H:%M:%S') else: logininfo['LastLoginTime']=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) if q[4]: logininfo['lottery_num'] = q[4] else: logininfo['lottery_num'] = 0 if q[5]: logininfo['integral_num'] = q[5] else: logininfo['integral_num'] = 0 if q[6]: logininfo['indent_num'] = q[6] else: logininfo['indent_num'] = 0 if q[7]: logininfo['work_order_num'] = q[7] else: logininfo['work_order_num'] = 0 cs.close() mssql_conn.close() return render_to_response('template/user_basicinfo.html',logininfo) else: return HttpResponseRedirect('/signin')

 这里分享一个我的例子!

Welcome to Python world! I have a contract in this world! How about you?
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
182 45
|
1月前
|
SQL 安全 前端开发
Web学习_SQL注入_联合查询注入
联合查询注入是一种强大的SQL注入攻击方式,攻击者可以通过 `UNION`语句合并多个查询的结果,从而获取敏感信息。防御SQL注入需要多层次的措施,包括使用预处理语句和参数化查询、输入验证和过滤、最小权限原则、隐藏错误信息以及使用Web应用防火墙。通过这些措施,可以有效地提高Web应用程序的安全性,防止SQL注入攻击。
54 2
|
1月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
65 2
|
1月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
44 1
|
2月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
44 4
|
2月前
|
SQL 数据库 索引
SQL语句实现投影连接:方法与技巧详解
在SQL数据库查询中,投影和连接是两个核心概念
|
2月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【10月更文挑战第10天】本文比较了Python中三个最受欢迎的Web框架:Django、Flask和Pyramid。Django以功能全面、文档完善著称,适合快速开发;Flask轻量灵活,易于上手;Pyramid介于两者之间,兼顾灵活性和安全性。选择框架时需考虑项目需求和个人偏好。
40 1
|
2月前
|
SQL 数据库 索引
SQL语句实现投影连接:技巧与方法详解
在SQL数据库操作中,投影连接(Projection Join)是一种常见的数据查询技术,它结合了投影(Projection)和连接(Join)两种操作
|
7月前
|
开发框架 前端开发 JavaScript
Python 有哪些Web框架?比如Flask、Django等知识梳理
Python 有哪些Web框架?比如Flask、Django等知识梳理
386 1
|
7月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【4月更文挑战第9天】本文对比了Python三大Web框架Django、Flask和Pyramid。Django功能全面,适合快速开发,但学习曲线较陡;Flask轻量灵活,易于入门,但默认配置简单,需自行添加功能;Pyramid兼顾灵活性和可扩展性,适合不同规模项目,但社区及资源相对较少。选择框架应考虑项目需求和开发者偏好。
341 0