Flask SQLAlcharm数据库操作(1)

SQLAlchemy是Python的一个ORM(对象关系映射)框架,可以让我们不需要写SQL语句就可以方便的操作数据库,只要定义相关的表类,就可以生成对应的表,以及通过定义的表类就可以方便地对数据库进行增删改查操作。

注:本文配置环境为mac

一、安装环境
  • 安装mysql,使用homebrew来安装
> brew install mysql
# 随后根据提示配置数据库密码,是否禁止远程登陆,是否删除匿名用户等

由于SQLAlchemy没办法直接连接mysql,需要通过第三方驱动来连接,这里选择mysql-python。

  • 安装mysql驱动mysql-python
# 首先安装mysql-connector-c
> brew install mysql-connector-c

# 再安装mysql-python
> sudo python3 -m pip install mysql-python
  • 安装SQLAlchemy
python3 -m pip install flask-sqlalchemy
二、新建数据库 flaskdb
@>mysql -u root -p

@>密码(默认为空)
 
# 户创建一个数据库flaskdb
mysql>create database flaskdb;

# 授权
mysql>grant all privileges on flaskdb.* to root@localhost identified by 'root';

# 刷新权限
mysql>flush privileges;
三、建立工程

使用Pycharm建立flask工程,工程名称:FlaskDemo

配置数据库访问路径,用户和密码,在工程根目录下的config.py文件中添加:

# config.py

# 配置 sqlalchemy  "数据库+数据库驱动://数据库用户名:密码@主机地址:端口/数据库?编码"
SQLALCHEMY_DATABASE_URI = "mysql://root:root@localhost:5000/flaskdb"

这里配置了SQLAlchemy默认的mysql驱动,驱动与安装的数据库有关系,我们之前安装的是mysql数据库,并且驱动为mysql-python
具体可以参考 http://docs.sqlalchemy.org/en/latest/core/engines.html?highlight=database#database-urls

四、初始化工程和数据库

操作数据库有两种方式,一是使用flask_sqlalchemy,另一个是直接使用原始的sqlalchemy。
其中flask-sqlalchemy是对sqlalchemy进行了一些封装,提供了一些常用工具,使用更简洁。
这里我们使用flask-sqlalchemy对数据进行操作,使用原始sqlalchemy的流程基本是一样的,使用语法稍微有点区别【具体可以参考文末Demo的just_sqlalchemy分支】。

  • 新建db.py文件,创建db
# db.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()
  • 在工程目录下的init.py下(主要初始化流程都做了注释)
# __init__.py

from flask import Flask
from db 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
  • 初始化工程:
    在FlaskDemo.py文件中:
# FlaskDemo.py

from _init_ import app

@app.route('/')
def hello_flask():
    return 'Hello Flask!'


if __name__ == '__main__':
    app.debug = app.config['DEBUG'] # 配置为Debug模式,这样修改文件后,会自动重启服务
    app.run(host='0.0.0.0') # 这里配置为可在局域网中访问,默认为127.0.0.1,只能在本机访问
五、建立数据库表类
  • 新建models.py文件,并创建User数据表类
# models.py

from db import db


class User(db.Model):

    # Columns

    __tablename__ = 'users'  # 指定表名,可以写,同时可以不写,不写的话默认为类名小写

	# id--字段名;db.Integer--数据类型;primary_key=True--是主键;autoincrement=True--是自增
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
	
	# name 字段名;string类型,字段长度为64;unique唯一的;index=True 可以建立索引
    name = db.Column(db.String(64), unique=True, index=True)

    pwd = db.Column(db.Integer, default=0)

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

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

    def __str__(self):
        return '<User %s>' % self.name
  • 运行项目
    通过Pycharm Run FlaskDemo。或者命令行运行:
python3 FlaskDemo

此时就会在flaskdb中创建出users数据表

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值