Debian 7.11 安装Python3.x

最近在学习使用Python3进行Web开发,由于以前使用的都是Debian7系统,而此系统自带的Python版本为2.x,因此需要安装Python3.x,在此记录安装过程

1、SSH至Debian系统
2、创建Python3.x的安装目录

mkdir /usr/local/python3

3、进入Python官方下载站点,复制3.x版本的Python源代码包链接:

屏幕快照 2016-09-07 上午11.22.52

4、在Debian7 SSH中,获取3.x安装包:

wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz

5、解压安装包

tar -zxvf Python-3.5.2.tgz

6、进入解压后的目录:

cd Python-3.5.2/

7、设置编译参数,Python3.x的安装位置:

./configure --prefix=/usr/local/python3

8、编译Python3.x并安装:

make
make install

9.移动并备份原有Python2.x命令链接:

mv /usr/bin/python /usr/bin/python_bak

10、创建Python3.x到系统当前python命令的链接:

ln -s /usr/local/python3/bin/python3.5 /usr/bin/python

11、查看系统当前Python版本:

 python --version

如果一切顺利,这时系统python的默认版本将为Python 3.x

Python3 Flask下连接MySQL异常

根据《Flask Web开发》书中的例子学习Python-Web时,使用Mysql数据库替换了书中使用的Sqlite数据库,中间发生一些波折,在此记录

第一版代码:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy


app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:pwd@localhost/routebase'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True


db = SQLAlchemy(app)


class Route(db.Model):
    __tablename__ = 'route'
    id = db.Column(db.Integer, primary_key=True)
    hash = db.Column(db.String(45), unique=True)
    url = db.Column(db.Text, nullable=False)

在此安装了flask和SQLAlchemy,运行后提示如下错误:

ImportError: No module named 'MySQLdb'

此处是因为未安装 mysql-python模块,但是安装后依然提示如上异常。此处异常是因为python3目前不支持mysql-python模块,因此安装pymysql模块

pip3 install PyMySQL

并修改代码中的Mysql连接字符串如下:

mysql+pymysql://user:pwd@localhost/routebase

连接字符串中添加了“pymysql”,使用pymysql模块连接MySQL数据库

完整的代码如下:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy


app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://user:pwd@localhost/routebase'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True


db = SQLAlchemy(app)


class Route(db.Model):
    __tablename__ = 'route'
    id = db.Column(db.Integer, primary_key=True)
    hash = db.Column(db.String(45), unique=True)
    url = db.Column(db.Text, nullable=False)

测试:

//引入数据库对象
from database import db
//引入实体对象
from database import Route
//新建实体对象
newroute = Route(hash='ds', url='we')
//插入对象
db.session.add(newroute)
//提交事物
db.session.commit()