初学Python之Flask开发API接口

在Windows下用Python访问MySQL数据库,

并使用Flask开发API接口对外提供数据访问。

1、查看 python 的版本

python -V
Python 2.7.12 :: Anaconda 4.1.1 (64-bit)

2、安装驱动 MySQL-python,下载 python 的对应版本

https://pypi.python.org/pypi/MySQL-python/

3、检查MySQLdb模块是否可以正常导入
python
import MySQLdb
ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。
结论:驱动版本与python不对应,必须是32位对应32位,64位对应64位。
重新下载非安装版本:MySQL-python-1.2.5.zip
解压,进入MySQL-python-1.2.5目录:
python setup.py install
报错:error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat).
继续下载:Microsoft Visual C++ Compiler for Python 2.7
http://www.microsoft.com/en-us/download/details.aspx?id=44266
安装这个编译器后,继续安装:
python setup.py install
继续报错:
_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory
原因:关联MySQL Connector的相关版本不一致造成的。
郁闷,为啥还需要MySQL Connector?
太折腾,搜索了一下,非官网上,有64位的MySQL-python下载:
http://www.codegood.com/archives/129
安装后,再测试:
python
import MySQLdb
ok了! 
同事建议使用conda来管理Python开发环境 ,介绍如下:
Anaconda 提供一个管理工具 conda ,可以把 conda 看作是 pip + virtualenv + PVM (Python Version Manager) + 一些必要的底层库,也就是一个更完整也更大的集成管理工具。如果只想用 conda ,可以下载简化版的 Miniconda(https://conda.io/docs/install/quick.html#linux-miniconda-install) ,需要 Anaconda 可以安装完全版,一共大概400M,用阿里云服务器从官方网站下载大概要6个小时,不过还好清华大学TUNA镜像源:https://mirrors.tuna.tsinghua.edu.cn/anaconda/

4、安装Flask
pip install flask
安装后,再测试:
python
import flask
ok了!

5、代码

sql.py


# -*- coding: UTF-8 -*-
'''
封装类
'''
import MySQLdb

class MyTest(object):
    '''
    MyTest

    '''

    def __init__(self, HOST, USER, PASSWD, DB, PORT):
        self.conn = MySQLdb.connect(
            host=HOST, user=USER, passwd=PASSWD, db=DB, port=PORT)
        self.cur = self.conn.cursor()

    def getdata(self, sql):
        '''
        getdata
        '''
        result = None
        try:
            count = self.cur.execute(sql)
            info = self.cur.fetchmany(count)
            result = []
            for row in info:
                result.append(row)
            return result
        except MySQLdb.Error, e:
            return "Error:%s" % str(e)
        finally:
            # 能够改变变量作用域的代码段是 def、class、lamda
            if self.cur:
                self.cur.close()
                self.conn.commit()
                self.conn.close()

app.py
# coding:utf-8
'''
  在Windows下用Python访问MySQL数据库,并使用Flask开发API接口对外提供数据访问
'''
from sql import MyTest
from flask import Flask, jsonify
APP = Flask(__name__)

@APP.route('/test')
def test():
    '''
      路由测试
    '''
    host, user, passwd = '127.0.0.1', '****', '*****'
    dbname, port = 'dbdemo', 800
    instance = MyTest(host, user, passwd, dbname, port)
    result = instance.getdata("select * from mytb limit 0,10")
    if result is not None:
        return jsonify(result)
    else:
        return "no data"

if __name__ == "__main__":
    APP.run(host='0.0.0.0', port=7777, debug=True)

测试 http://127.0.0.1:7777/test
OK!

你可能感兴趣的:(Web)