慕课网-Django入门到进阶-更适合Python小白的系统课程-第4章Django中的ORM和数据库-4.6sqlachemy介绍和基本使用

第4章 Django 中的 ORM 和数据库

4.6 sqlalchemy 介绍和基本使用

第三方 ORM SQLAlchemy

什么是 SQLAlchemy

1.SQLAlchemy 是 Python 社区最知名的 ORM 工具之一,为高效和高性能的数据库访问设计,实现了完整你给的企业级持久模型。

2.它可以搭配在任何一个 Python 的 Web 框架上,其中比较突出出名的是 Flask

SQLAlchemy 的常用基础模块

模块名 描述 初始化
declarative_base 初始化 sql 与模块化的基础模块 Base = declarative_base()
create_engine 数据库引擎,链接数据库 engine = create_engine('mysql + pymysql://root:@localhost:3306/sqlalchemy_test')
sessionmaker 数据插入查询的模块 db_session = sessionmaker(bind=engine)()

SQLAlchemy 常用类型

类型名 Python 类型 描述
Integer int 常规整型,通常为 32 位
SmallInteger int 短整型,通常为 16 位
BigInteger int 或 long 精度不受限整型
Float float 浮点型
String str 可变长度字符串
Text str 可变长度字符串,适合大量文本
Boolean bool 布尔型
Date datetime.date 日期类型
Time datetime.time 时间类型
from sqlalchemy import *

SQLAlchemy 常用属性(列方法参数)

参数名 描述
primary_key 如果设置为 True,则为该列表的主键
autoincrement 如果设置为 True,则主键自增
unique 设置唯一索引
index 设置普通索引
nullable 是否允许为空
default 初始化默认值

同步数据库方法

# 实例化 base 模块
Base = declarative_base()

# 链接数据库引擎
engine = create_engine('mysql+pymysql://root:@localhost:3306/sqlalchemy_test')

# 数据库建立
Base.metadata.create_all(engine)

所有的模型需要在 create_all 目录下被引用

依赖

pip install sqlalchemy
pip install pymysql

只提一句

数据库表结构更新模块:sqlalchemy-migrate alembic

自己联系配置

实例

1.安装依赖

pip install sqlalchemy

2.在命令行窗口进入mysql 数据库界面创建数据库 sqlalchemy_test

create database sqlalchemy_test;

3.不用新建项目,新建文件 sqlalchemy_test.py(必须记住不能把文件名写成 sqlalchemy.py,导致运行文件报错,我找了1个多小时才找到原因!)

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/sqlalchemy_test')
db_session = sessionmaker(bind=engine)()

def init():
    Base.metadata.create_all(engine)

def drop():
    Base.metadata.drop_all()

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(20))

if __name__ == '__main__':
    init()

4.运行代码后进入命令行数据库界面查看

use sqlalchemy_test;
show tables;
show create table user;

5.在命令行窗口输入 ipython,进入调试界面,插入数据

from sqlalchemy_test import User
user = User(name='dewei')

from sqlalchemy_test import db_session
db_session.add(user)
db_session.commit()
db_session.close()

6.进入命令行数据库界面查看

show tables;
select * from user;

7.在命令行窗口输入 ipython,查询数据

from sqlalchemy_test import User
from sqlalchemy_test import db_session

dewei = db_session.query(User).filter_by(name='dewei')
dewei

dewei = list(dewei)
dewei

dewei = db_session.query(User).filter_by(name='dewei').one()
dewei

dewei.name
dewei.id 

 

posted on 2020-01-31 13:28  herisson_pan  阅读(12)  评论(0)    收藏  举报

导航