python3使用flask-sqlalchemy操作mysql

   由于 MySQL-python 不支持 Python 3(MySQL-3.23 through 5.5 and Python-2.4 through 2.7 are currently supported),python3下使用flask-sqlalchemy时,安装的命令是:

pip install pymysql
pip install flask-sqlalchemy

  相关代码如下:

# config.py

SECRET_KEY = 'flaskMysql'
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://user:password@host:port/dbname'
SQLALCHEMY_TRACK_MODIFICATIONS = True
DEBUG = True 
# _init_.py

from flask import Flask, render_template, jsonify
from db_mysql import db

app = Flask(__name__) # 新建app对象
app.config.from_object('config') # 加载配置信息,其中有数据库的配置信息,包含在SQLALCHEMY_DATABASE_URI中


# 初始化db,并创建models中定义的表格
with app.app_context(): # 添加这一句,否则会报数据库找不到application和context错误
    db.init_app(app) # 初始化db
    db.create_all() # 创建所有未创建的table
#db_mysql.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True)
    username = db.Column(db.String(32), nullable=False, unique=True, server_default='', index=True)
    role_id = db.Column(db.Integer, nullable=False, server_default='0')

    def __init__(self,username,role_id):
        self.username = username
        self.role_id = role_id

    def __repr__(self):
        return '<User %r,Role id %r>' %(self.username,self.role_id)

class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True)
    name = db.Column(db.String(16), nullable=False, server_default='', unique=True)

    def __init__(self,name):
        self.name = name

    def __repr__(self):
        return '<Role %r>' % self.name

猜你喜欢

转载自blog.csdn.net/kxiaozhuk/article/details/81741391