慕课网-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) 收藏 举报
浙公网安备 33010602011771号