栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

orm的实现原理_ORM模型?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

orm的实现原理_ORM模型?

数据库创建步骤:

1.安装sqlalchemy:pip3 install flask-sqlalchemy

2.配置数据库:mysql/sqlite

3.定义表结构,设计表

4.创建表

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATAbase_URI'] = 'mysql+pymysql://root:@127.0.0.1:3306/demo'
db = SQLAlchemy()    # 数据库对象
# 此处将app与db绑定到一起,后续对app的操作就是对db的操作。
db.init(app)

class User(db.Model):
    """设计User表模型"""
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)
    
def create_all():
    """生成表"""
    return db.create_all()

create_all()

1.常用数据格式:

        Integer:一个整数

        String(size):有长度限制的字符串

        Text:一些较长的unicode文本

        DateTime: 表示为python datetime对象的时间和日期

        Float:存储浮点值

        Boolean:存储布尔值

        PickleType:存储为一个持久化的python对象

        LargeBinary:存储一个任意大的二进制数据

2.参数:

        db.ForeignKey('project.id')

        primary_key:主键,唯一标识

        autoincrement:自增

        unique:唯一

        index:索引

        nullable:可以为空

        default:默认值

        comment:说明,注释

多个数据库绑定

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATAbase_URI'] = 'mysql+pymysql://root:password@127.0.0.1:3306/tasks'
# 绑定多个数据库
app.config['SQLALCHEMY_BINDS'] = {
    'users':'mysql+pymysql://root:password@127.0.0.1:3306/users',
    'students':'mysql+pymysql://root:password@127.0.0.1:3306/students',
    'runs':'mysql+pymysql://root:password@127.0.0.1:3306/runs'  
}
db = SQLAlchemy()    # 数据库对象
# 此处将app与db绑定到一起,后续对app的操作就是对db的操作。
db.init_app(app)

class User(db.Model):
    """模型绑定,设计User表模型"""
    __bind_key__ = 'users'  # 指定绑定的数据库
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

def create_all():
    """生成表"""
    return db.create_all()

# 运行
with app.app_context() as ctx:
    ctx.push()
    user = User(username='chuntian', email='chuntian.163.com')
    db.session.add(user)
    db.session.commit()

插入与查询:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATAbase_URI'] = 'mysql+pymysql://root:password@127.0.0.1:3306/tasks'
# 绑定多个数据库
app.config['SQLALCHEMY_BINDS'] = {
    'users': 'mysql+pymysql://root:password@127.0.0.1:3306/users',
    'students': 'mysql+pymysql://root:password@127.0.0.1:3306/students',
    'runs': 'mysql+pymysql://root:password@127.0.0.1:3306/runs'
}
db = SQLAlchemy()  # 数据库对象
# 此处将app与db绑定到一起,后续对app的操作就是对db的操作。
db.init_app(app)


class User(db.Model):
    """模型绑定,设计User表模型"""
    __bind_key__ = 'users'  # 指定绑定的数据库
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)


def create_all():
    """生成表"""
    return db.create_all()

@app.route('/insert')
def insert():
    # 插入数据
    with app.app_context() as ctx:
        ctx.push()
        user = User(username='chuntian', email='chuntian.163.com')
        user2 = User(username='chuntian2', email='chuntian.163.com')
        db.session.add(user)    # 保存到会话
        db.session.add_all([user, user2])   # 保存多个
        try:
            db.session.commit()     # 事务提交
        except:
            db.session.rollback()   # 回滚
    return 'insert success'

@app.route('/query')
def query():
    users = User.query.all()
    print(users)
    return 'query success'

if __name__ == '__main__':
    create_all()
    app.run(debug=True)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/786675.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号