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

初入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 '' % 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()又转换为字符串




你可能感兴趣的:(python)