博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Visual Studio 2013进行Python开发(二)---python连接sql server数据库
阅读量:4556 次
发布时间:2019-06-08

本文共 3591 字,大约阅读时间需要 11 分钟。

1.首先需要安装以下三个包:

sqlalchemy

flask-sqlalchemy

pydoc

安装方法如下:

选择env右键选择“Install Python Package...”

弹出如下界面,然后输入包名点击确定即可

 

 

2.在项目中添加一个“db_mg.py”的文件,代码如下:

#db_mg.pyfrom sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerfrom FlaskWebProject3.models import Base class DatabaseManagement():    def __init__(self):        self.engine = create_engine("mssql+pymssql://sa:123456@127.0.0.1/UserRights?charset=utf8",echo=True,encoding='utf-8',convert_unicode=True)        DBsession = sessionmaker(bind=self.engine)    #创建DBsession类        self.session = DBsession()    #创建对象     def add_obj(self,obj):    #添加内容        self.session.add(obj)        self.session.commit()    #提交        return obj    def queryall(self,target_class):    #查询内容        result_list = self.session.query(target_class).all()        return result_list    def query_all(self,target_class,query_filter):    #查询内容        result_list = self.session.query(target_class).filter(query_filter).all()        return result_list     def update_by_filter(self, obj, update_hash,query_filter):     #更新内容        self.session.query(obj.__class__).filter(query_filter).update(update_hash)        self.session.commit()     def delete_by_filter(self, obj, query_filter):     #删除内容        self.session.query(obj).filter(query_filter).delete()     def close(self):    #关闭session        self.session.close()     def execute_sql(self, sql_str):    #执行sql语句        return self.session.execute(sql_str)

其中

create_engine("mssql+pymssql://sa:123456@127.0.0.1/User?charset=utf8",echo=True,encoding='utf-8',convert_unicode=True)中的"sa"为账户登录名,"123456" 为数据库登陆名,"127.0.0.1"为登陆的数据库的服务器名,"User"为数据库名,
如果不添加如下“charset=utf8”,有可能从数据库中查询出来的中文为乱码

 3.具体的调用如下:

views.py

"""Routes and views for the flask application."""from datetime import datetimefrom flask import render_template, session#from FlaskWebProject3 import appfrom flask import Flask,request from flask.json import jsonifyimport osfrom flask.helpers import make_responsefrom flask_bootstrap import Bootstrapfrom wtforms import StringField, SubmitFieldfrom wtforms.validators import Requiredfrom flask_wtf.form import Formfrom sqlalchemy.sql.schema import Columnfrom sqlalchemy.ext.declarative.api import declarative_basefrom click import INTfrom lib2to3.fixer_util import Stringfrom FlaskWebProject3 import app, modelsfrom flask_sqlalchemy import SQLAlchemyfrom FlaskWebProject3.models import Person, User, enginefrom FlaskWebProject3.db_mg import DatabaseManagementfrom sqlalchemy.orm.session import sessionmakerfrom sqlalchemy.engine import create_enginefrom _operator import and_#from FlaskWebProject3.Person import Person#app.config['SESSION_TYPE'] = 'filesystem'#app.config['SECRET_KEY'] = os.urandom(24)#app.config['SQLALCHEMY_DATABASE_URI'] = 'mssql+pymssql://sa:123456@127.0.0.1/UserRights?charset=utf8'#app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True##app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False#app.config['SQLALCHEMY_NATIVE_UNICODE']=True;#app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=True#app.config['SQLALCHEMY_ECHO']=Trueapp.config['JSON_AS_ASCII']=False@app.route('/111', methods=['GET'])def GetUser(): db_session=DatabaseManagement() query_filter=and_(Person.Name=="james",Person.Password=="123456"); person_list = db_session.queryall(Person) output = {}  for item in person_list:    output["Name"] = item.Name      output["Password"] = item.Password     return jsonify({
'message': output}) if __name__ == '__main__': app.run(self)

注意:

app.config['JSON_AS_ASCII']=False是设置返回的json对象中中文是否乱码,如果不设置则json中返回的中文为乱码

 

转载于:https://www.cnblogs.com/zhangabo/p/11504370.html

你可能感兴趣的文章
Cortex-M3 异常返回值EXC_RETURN
查看>>
Objective-C语言-内存管理
查看>>
迅雷API:实现文件下载
查看>>
Socket编程实践(2) Socket API 与 简单例程
查看>>
print 与标准输出
查看>>
pytest单元测试框架(day01)
查看>>
利用Azure Automation实现云端自动化运维(2)
查看>>
Linux学习说明
查看>>
【网络流24题】负载平衡问题(费用流)
查看>>
bzoj 3507 DP+哈希
查看>>
递归问题==优化 还有数据库sqlreader
查看>>
IOS第四天(2:字典转模型plist)
查看>>
什么是数据集
查看>>
Android开发数据库三层应用-DataSnap
查看>>
关于setTimeout运行机制
查看>>
2019 Multi-University Training Contest 4
查看>>
学号 《信息安全系统设计基础》第7周学习总结(一)
查看>>
POJ1741Tree [点分治]【学习笔记】
查看>>
BZOJ 3238: [Ahoi2013]差异 [后缀自动机]
查看>>
UVA 12633 Super Rooks on Chessboard [fft 生成函数]
查看>>