您的位置:首页 > 编程语言 > Python开发

flask框架在python中通过sqlalchemy+pymysql连接mysql

2018-03-13 17:22 741 查看
初入flask,看了网上的一些东西,留下笔记,供以后参考学习,
一.flask项目大体结构如下

-|--app--|--static
                |--template    页面及部分逻辑
                |--utils              逻辑
                |--__init__.py  初始化

                |--models.py    sqlalchemy用的models对象也是映射的表

                |--views.py        主要是路由 url_for反向定义
-|--config.py                      设置
-|--create_db.py                创建mysql数据库对应表

-|--run.py
二.首先配置sqlalchemy连接mysql数据库
在config.py中添加
#mysql连接语句
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://mysql用户名:mysql用户密码@localhost:3306/mysql数据库名?charset=utf8'
#

SQLALCHEMY_TRACK_MODIFICATIONS = True
在__init__.py中添加
from flask import Flask
from flask_sqlalchemy import SQLAlchemy        导入sqlalchemy

app = Flask(__name__)                                               flask类的实例                            

app.config.from_object('config')                                读取config.py里的配置

db = SQLAlchemy(app)                                                sqlalchemy的实例

from app import views,models                                    导入views和models
在models.py中添加
class User(db.Model):
    __tablename__ = 'users'                                            表名
    id = db.Column(db.Integer, primary_key=True)    
    username = db.Column(db.String(80), unique=True)
    def __init__(self,username):                                        相当于构造函数
        self.username=username
    def __repr__(self):                                                           返回

        return '<User %r>' % self.username
然后在create_db.py中添加
from app import db

db.create_all()                                                                        创建所有models的表
在终端中运行python create_db.py
就可以看到创建好的users数据表

三。插入数据
        在utils文件夹下创建user.py添加以下代码
from app import db                            导入alchemy对象

from .models import User                导入user类
newobj = User('name', 'email', 'pwd')
try:

        db.session.add(newobj)
except:

        db.session.rollback()
else:
        db.session.commit()

即可添加成功,还可以使用db.session.merge()去更新,如果重复就覆盖,不重复就添加
批量添加则用db.session.add_all(models)
如:newobj = [User('name', 'email', 'pwd'),User('name1', 'email1', 'pwd1')]
        db.session.add(newobj)
如果添加的值为unicode编码或特殊字符,可以用json.dumps()将其转换为json对象存储在Mysql数据库,读出后再用json.loads()又转换为字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sqlalchemy