码迷,mamicode.com
首页 > 数据库 > 详细

SQLAlchemy 使用(一)

时间:2019-02-27 20:42:46      阅读:393      评论:0      收藏:0      [点我收藏+]

标签:index   运行   删除表   table   端口   .com   linux   integer   log   

前言

 最近项目等待前端接接口,比较空闲.就想学习一些新东西.学啥呢?考虑到ORM的易用性,还是学习一下ORM.那么与Flask搭配的ORM有 flask-sqlalchemy 但是该组件专为Flask定制.

如 JWT与Flask-JWT,考虑到适用性,还是觉得学 SQLAlchemy好一些.

正文

安装

要想使用 SQLAlchemy,首当其冲的当然是安装啦

pip install sqlalchemy

建立model文件

然后我们在某个目录下新建一个 models.py 文件 (文件名叫models完全是因为我想到ORM脑子里第一个就是Django哈)

引入

我们引入相关模块

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

值得注意的是,最后一个引入引入的是各个字段(比如varchar等,建立model用,所以可能不止这几个,可以按情况来)

字段对照及约束

字段对照表如下

 

类型名说明
Integer 整形
SmallInteger 小整形
BigInteger 长整形
Float 浮点形
String varchar
Text 长文本 text
Boolean tinyint
Date 日期 datetime.date
Time 时间 datetime.time
DateTime 日期和时间 datetime.datetime

 

约束如下

选项说明
primary_key 主键
unique 唯一索引
index 常规索引
nullable 是否为空 默认为True
default 默认值

连接数据库

我们在操作数据库前需要先连接数据库

这里以 pymysql 为例

# 用户名:密码@访问地址:端口/数据库
engine = create_engine(mysql+mysqldb://root:***@***:***/website)

# 创建DBSession类型
DBSession = sessionmaker(bind=engine)

# 创建Base基类
Base = declarative_base()

这时候你可以运行该文件测试是否成功

如果报  ModuleNotFoundError: No module named ‘MySQLdb‘  错误是你缺少模块,安装即可(每个操作系统对应的模块不一样)

easy_install mysql-python (mix os)
pip install mysql-python (mix os)
apt-get install python-mysqldb (Linux Ubuntu)
cd/usr/ports/databases/py-MySQLdb && make install clean (FreeBSD)
yum install MySQL-python (linux Fedora, CentOS)
pip install mysqlclient (Windows)

创建 model

下面我们写model

定义的字段和约束参考上面的表

class AdminUser(Base):
    # 用户表
    __tablename__ = admin_user   # 表名
    id = Column(Integer, primary_key=True)  # 主键
    username = Column(String(12), nullable=False, index=True)  # 用户名,Varchar12位,不可为空,常规索引
    pwd = Column(String(256), nullable=False)  # 密码,不可为空
    token = Column(String(256))  # token

 

想要将表应用到数据库,在最下面加上

Base.metadata.create_all(engine)

运行py文件即可

 

但是这种方式只能新建表,不能修改/删除表字段

这个时候我们需要该模块作者的另一力作  alembic

alembic的教程

SQLAlchemy 使用(一)

标签:index   运行   删除表   table   端口   .com   linux   integer   log   

原文地址:https://www.cnblogs.com/chnmig/p/10446341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!