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()

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注