当前位置:   article > 正文

SQLAlchemy 教程 —— 基础入门篇

mybatis sqlalchemy

SQLAlchemy 教程 —— 基础入门篇

一、课程简介

1.1 实验内容

本课程带领大家使用 SQLAlchemy 连接 MySQL 数据库,创建一个博客应用所需要的数据表,并介绍了使用 SQLAlchemy 进行简单了 CURD 操作及使用 Faker 生成测试数据。

1.2课程知识点

  • 学会用 SQLALchemy 连接数据库(MySQL, SQLite, PostgreSQL), 创建数据表;
  • 掌握表数据之间一对一,一对多及多对多的关系并能转化为对应 SQLAlchemy 描述;
  • 掌握使用 SQLAlchemy 进行 CURD 操作;
  • 学会使用 Faker 生成测试数据

学习本课程需要你对 Python 与 MySQL 都有基本的掌握。

二、ORM 与 SQLAlchemy 简介

ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射。简单的说,ORM 将数据库中的表与面向对象语言中的类建立了一种对应关系。这样,我们要操作数据库,数据库中的表或者表中的一条记录就可以直接通过操作类或者类实例来完成。

orm1

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

接下来我们将使用 SQLAlchemy 和 MySQL 构建一个博客应用的实验库。

先安装 SQLAlchemy:

$ sudo pip install sqlalchemy

三、连接与创建

实验楼环境已经为我们安装了 MySQL,但还没有启动, 在启动 MySQL 之前,我们需要进行一些配置,将 MySQL 默认的 latin1 编码改成 utf8 。

$ sudo vim /etc/mysql/my.cnf

通过上面的命令打开 MySQL 的配置文件, 添加下面几个配置:

  1. [client]
  2. default-character-set = utf8
  3. [mysqld]
  4. character-set-server = utf8
  5. [mysql] default-character-set = utf8

保存退出。现在我们可以启动 MySQL 服务了:

$ sudo service mysql start

在命令行下输入下面命令启动 MySQL:

$ mysql -uroot -p

orm2

看到上面的内容就说明我们的 MySQL 可以正常启动了(注意,上面的密码不需要输入内容,直接回车就行), 并且我们我们通过命令:

> create database blog;

创建一个名为 blog 的数据库为下面的使用作准备。

另外,我们需要安装一个 Python 与 MySQL 之间的驱动程序:

$ sudo apt-get install python-mysqldb

3.1 连接数据库

我们在 Code 下新建个 Python 文件,叫什么名字就随你便了,这里我们叫 db.py,写入下面的内容:

  1. # coding: utf-8
  2. from sqlalchemy import create_engine
  3. engine = create_engine('mysql+mysqldb://root@localhost:3306/blog')
  4. print(engine)

在上面的程序中,我们连接了默认运行在 3306 端口的 MySQL 中的 blog 数据库。

运行下这个程序,看到下面的信息说明我们已经连接成功了:

orm3

3.2 描述表结构

要使用 ORM, 我们需要将数据表的结构用 ORM 的语言描述出来。SQLAlchmey 提供了一套 Declarative 系统来完成这个任务。我们以创建一个 users 表为例,看看它是怎么用 SQLAlchemy 的语言来描述的:

  1. # coding: utf-8
  2. from sqlalchemy import create_engine
  3. from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, String, Integer engine = create_engine('mysql+mysqldb://root@localhost:3306/blog?charset=utf8') Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) username = Column(String(64), nullable=False, index=True) password = Column(String(64), nullable=False) email = Column(String(64), nullable=False, index=True) def __repr__(self): return '%s(%r)' % (self.__class__.__name__, self.username)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/521862
推荐阅读
相关标签
  

闽ICP备14008679号