美文网首页
python-Flask_SQLAlchemy(1)

python-Flask_SQLAlchemy(1)

作者: SmallPot_Yang | 来源:发表于2018-03-31 13:35 被阅读0次

数据库SQLAlchemy

[TOC]

SQLAlchemy介绍

  • flask_sqlalchemy是一套ORM框架。
  • ORM(Object Relationship Mapping):模型关系映射,把关系数据库的表结构映射到对象上
  • ORM优点:
    • 隐藏数据访问细节,提高开发效率
    • 构造数据结构变得简单
  • ORM缺点:
    • 降低执行效率,增加学习成本
    • 无法进行复杂的查询

配置连接与初始化

  1. 在config.py文件添加配置信息
# 数据库连接遵循这个语句
# dialect+driver://username:password@host:port/database
DIALECT = 'mysql'
DRIVER = 'pymysql'
USERNAME = 'Jyang'
PASSWORD = 'yj19930621+-*/'
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'jsql'

SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(
    DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)

SQLALCHEMY_TRACK_MODIFICATIONS = False      # 不提示警告
  1. 导入用flask_sqlalchemy中的SQLAlchemy进行初始化,并引入配置文件
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config

app = Flask(__name__)      
app.config.from_object(config)      #引入配置文件
db = SQLAlchemy(app)                #实例化

db.create_all() #将模型创建到数据库中(只创建,后续有变化不会修改,如字段有变动需要再数据库把表删掉)

实例

config.py

# encoding: utf-8
DEBUG = True 

DIALECT = 'mysql'
DRIVER = 'pymysql'
USERNAME = 'Jyang'
PASSWORD = 'yj19930621+-*/'
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'jsql'

SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(
    DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
SQLALCHEMY_TRACK_MODIFICATIONS = False

main.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config

app = Flask(__name__)       #引入配置文件
app.config.from_object(config)
db = SQLAlchemy(app)

class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key= True, autoincrement = True) 
    username = db.Column(db.String(100), nullable = False)

# 创建映射表
class Article(db.Model):    #模型必须继承db.Model
    #db.Column映射到表中字段,primary_key主键,autoincrement自增,nullable可为空(默认为True)
    __tablename__ = 'article'
    id = db.Column(db.Integer, primary_key= True, autoincrement = True) 
    title = db.Column(db.String(100),nullable = False)
    content = db.Column(db.Text, nullable = False)
    author_id = db.Column(db.Integer,db.ForeignKey('user.id'))#关联user表的id字段
    
    #反向引用,'User'为模型名字
    author = db.relationship('User',backref=db.backref('article'))

db.create_all() 

@app.route('/')
def hello_world():
    return "hello world"

if __name__ == '__main__':
    app.run()

相关文章

  • python-Flask_SQLAlchemy(1)

    数据库SQLAlchemy [TOC] SQLAlchemy介绍 flask_sqlalchemy是一套ORM框架...

  • python-Flask_SQLAlchemy(2)

    SQLAlchemy模型与表映射 [TOC] 模型与表映射 模型需要继承自db.Model,映射到表中的属性需写成...

  • python-Flask_SQLAlchemy(5)

    模型分文件 [TOC] 分开models的目的 方便代码管理 解决循环引用 例子 主文件:main.py 模型文件...

  • python-Flask_SQLAlchemy(3)

    外键约束 [TOC] 创建外键约束表结构 有两个表,用户表(users)与文章表(article)。其中文章表中的...

  • python-Flask_SQLAlchemy(4)

    数据表多对多关系 [TOC] 多对多关系 多对多关系,需要通过一个中间表进行关联 中间表使用db.Table的方式...

  • 1▪1▪1▪1▪1

    今天是国际劳动节,出门看人头,上路遇堵车,处处挤破头,急哭也停不下车。 不如歇了吧 ...

  • 1+1+1…+1=1

    对“一”的理解: 赠人玫瑰,不仅仅是手留余香。 利益他人,实际上也疗愈了自己。 利他、利己,如此往复循环, 最终利...

  • (-1)×(-1)= 1

    数学家经过很长一段时间才认识到(-1)×(-1)= 1是不能被证明的(即使大数学家欧拉曾给出不能令人信服的...

  • 1-2-1-1-1

    【下马请罪】 子龙下马,向张飞跪地请罪道:“张将军,一时失手……”话未停,便被张飞一矛刺了个透心凉。子龙堵着胸口汩...

  • 1 1:1 1(原创小说)

    闪回:那天她…… 当时,我确实听到了那个声音,可如今却怎么也记不清了。 掉下来了。 我觉得,那一刻...

网友评论

      本文标题:python-Flask_SQLAlchemy(1)

      本文链接:https://www.haomeiwen.com/subject/olpgcftx.html