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

数据库关联操作:

#按用户名摸糊查询
User.query.join(Role).filter(Users.username.like('%xx%'))
#select xxx from User inner join Role on user.role_id=role.id where user.username like '%xx%'

#左外联接(left join)
User.query.outerjoin(Role).filter(Users.username.like('%xx%'))
#select xxx from User left outer join Role on user.role_id=role.id where user.username like '%xx%'

#以上是已经设置好外键,它自动找到关联的字段.也可以自己指定:
User.query.join(Role,User.role_id==Role.id).filter(User.username.like('%xx%'))
#select xxx from User inner join User on user.role_id=role.id where user.username like '%xx%'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值