首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQLAlchemy(一)

目标

使用 SQLAlchemy 连接数据库,创建数据表

环境:

Python==3.6.8

SQLAlchemy==1.2.16

Psycopg2==2.7.6.1

连接与创建

使用 docker 启动一个 postgres 容器:

进入容器,使用命令创建一个名叫 mydb 的数据库:

现在可以访问下刚创建的数据库,验证有没有创建成功:

如果一切顺利,会返回该信息,并成功进入 mydb 数据库:

最后一行也可能是(意味着当前操作数据库用户非超级用户):

ORM 连接

要想使用 ORM,必须先实现类与表的映射。

在 SQLAlchemy 中,使用 Declarative 系统来处理这种映射关系。一般情况,我们只需创建一个基于此的一个基类,然后描述我们自己类与表的关系:

这个 就是我们要继承的基类,现在我们创建一个 User 类:

其中 是必须的,另外还需要一个为 的 。

Note

QLAlchemy 的 基类不会对映射表做任何约束,反而鼓励使用者根据实际情况自定义最小基类,比如可以这么做:

因为在 SQLAlchemy 的 中没有定义任何 、 等等这些约束,所以在继承的时候顺讯没有关系,也可以这么写:

但是如果继承的两个类含有同样的属性,那么根据 Python 该属性由写在前面的那个类决定。

当我们的类构建完之后,Declarative 系统会把所有的 对象替换成叫 的特殊 Python 访问器。这个过程就叫做 。

之后,该映射类就能给我们提供从数据库中持久化和载入 的 SQL 上下文。

除此之外,该映射类还是一个普通的 Python 类,我们依旧可以在里面定义属性,方法等等。

在 SQLAlchemy 的 系统对定义的映射类描述阶段,会创建一个 对象并和这个 对象一起构建一个 对象。这个 对象一般不会用到,但当我们需要的时候,能从中获取大量的映射信息。

对象是 集合的一员。使用 系统的时候, 对象属性能直接通过 属性访问。

现在,我们使用 SQLALchemy 连接数据库:

然后调用 方法,传入 对象:

我们去数据库看看有没有创建对应的表:

查看对应的表结构:

END

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190123G1FBNF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券