zoukankan      html  css  js  c++  java
  • PythonFlask+pyodbc+sqlserver

    1.创建Flask项目

    项目结构长这样

    M:model(数据模型-自己创建)T:templates(视图模板)V:views.py(视图函数)

    2.创建虚拟环境

     3.编写sqlhelper.py(pip安装:pyodbc)

    import pyodbc
    
    class sqlhelper:
        '''sql帮助类'''
        def __init__(self):
            '''初始化 '''
            self.DRIVER='{ODBC Driver 17 for SQL Server}'#数据库引擎
            self.SERVER=r'127.0.0.1'#数据库地址
            self.DATABASE= 'NovelDB'#数据库名称
            self.UID = 'sa'#登录名
            self.PWD = '123456'#密码
    
        def GetConnect(self):  
            ''''' 连接数据库 '''  
            self.conn = pyodbc.connect('DRIVER=%s;SERVER=%s;DATABASE=%s;UID=%s;PWD=%s' % (self.DRIVER,self.SERVER,self.DATABASE,self.UID,self.PWD))
            cur = self.conn.cursor()  
            if not cur:  
                print("connected failed!")  
            else:  
                return cur  
    
        def ExecuteReader(self, sql):  
            ''''' 查询'''  
            cur = self.GetConnect() #连接数据库
            cur.execute(sql)#执行sql指令
            ret = cur.fetchall()#获取数据
            cur.close()#关闭游标
            self.conn.close()#关闭数据库连接
            return ret 
          
        def ExecuteNonQuery(self,sql):  
            ''''' 增删改'''  
            cur = self.GetConnect()  
            cur.execute(sql)  #执行sql指令
            self.conn.commit()#提交
            cur.close()#关闭游标
            self.conn.close() 
            
        def ExecuteScalar(self,sql):
            '''返回单个字段'''
            cur = self.GetConnect()  
            cur.execute(sql)#执行sql指令
            ret = cur.fetchone()[0]#获取一条数据的一个字段
            cur.close()#关闭游标
            self.conn.close()#关闭数据库连接
            return ret 

    还有一个连接数据库的方式,DSN,不需要密码,我没试过,顺嘴说一下。

    关于数据库引擎

    4.创建menu.py(用来测试看的)

    from . import sqlhelper
    
    class menu:
    
        def __init__(self):
             '''初始化 '''
             self.ms = sqlhelper.sqlhelper()
    
        def loadlist(self):
            #获取全部数据
           return self.ms.ExecuteReader("select menuid,name from menu")
    
        def addmenu(self,name):
            #添加
            self.ms.ExecuteNonQuery("insert menu(name) values('{0}')".format(name))
            print('添加菜单')

    5.将数据传递到前台(views.py)

    from .models.menu import menu
    
    @app.route('/test')
    def test():
        """菜单管理"""
        r = menu().loadlist()
        print(r)
        return render_template('test.html',data=r,title = '菜单管理')

    6.前台显示数据(创建一个test.html页面,把下面的代码丢到body里面去)

        <table class="table table-bordered">
            <tr>
                <th>菜单标识</th>
                <th>菜单</th>
                <th>操作栏</th>
            </tr>
            {% for i in data %}
            <tr>
                <td>{{ i[0] }}</td>
                <td>{{ i[1] }}</td>
                <td><input type="button" value="编辑" onclick="edit({{ i[0] }})" /></td>
            </tr>
            {% endfor %}
        </table>
        <script src="/static/scripts/jquery-1.10.2.js"></script>
        <script type="text/javascript">
            function edit(menuid) {
                alert(menuid);
            }
        </script>

    跑起来就是这样的

  • 相关阅读:
    Python六大开源框架对比:Web2py略胜一筹
    软件设计之UML—UML的构成[上]
    Web程序员最常用的11款PHP框架
    PHP常见框架
    WinCE的开发流程
    Windows10如何卸载OneDrive
    Windows系统中环境变量不展开的问题
    线程局部存储空间
    ping pathping tcping psping tracert
    ubuntu ufw 配置
  • 原文地址:https://www.cnblogs.com/MuZiLily/p/15572555.html
Copyright © 2011-2022 走看看