当前位置:Gxlcms > 数据库问题 > SQLAlchemy 使用(一)

SQLAlchemy 使用(一)

时间:2021-07-01 10:21:17 帮助过:8人阅读

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   

人气教程排行