SQLAlchemy 工具包和对象关系映射器是一组广泛的实用程序,用于处理 Python 和数据库。 该工具包提供了一个包含流行持久性模式的包,专为经济且强大的数据库可访问性而设计。 SQLAlchemy 允许开发人员使用简单的 SQL 语句(与其他对象关系映射工具不同),它提供了一种有用的方法来连接数据库表和用户定义的 Python 类。 SQLAlchemy 对象关系映射工具主要集中在使用 SQL 表达式语言。
SQLAlchemy 交互
SQLAlchemy 有几种方法可以直接处理数据库中的数据。
- 原始 SQL – 允许为特定目的或数据库开发自定义的、显式的 SQL 语句
- SQL 表达式语言 – 一种使用 Python 结构准确反映关系数据库结构和表达式的语言
- 甲骨文 – 对象关系映射是一种编码方法,它使用面向对象的编程语言在不同系统类型之间转换数据
SQLAlchemy 组件
引擎:引擎是 SQLAlchemy 应用程序的入口,作为 API 和数据库的抽象层。 它与 Dialect 组件和连接池交互,以将 SQL 语句从 SQLAlchemy 传递到数据库。
方言: Dialect 是 SQLAlchemy 用来与各种类型的 DBAPI 数据库实现交互的框架。 所有方言都需要安装合适的 DBAPI 驱动程序。 SQLAlchemy 维护多种数据库服务的方言,包括:
- MySQL
- 微软 SQL 服务器
- 甲骨文
- PostgreSQL
- SQLite
- 火鸟
- Informix
- 赛贝斯
元数据:元数据由描述表和其他模式级项目的多个 Python 资产组成。 数据库的元数据可以通过显式命名不同的组件及其属性来声明,使用如下结构:
- 桌子
- 柱子
- 外键
元数据也可以通过 SQLAlchemy 使用称为反射的过程轻松生成。
飞行前检查
- 这些说明主要在 Liquid Web 自我管理的 Ubuntu 18.04.3 LTS 专用服务器上以 root 用户身份执行。
- 这些说明假设您已经安装了 Python 2 和/或 Python 3(版本 3.3 或 >),并在您的服务器上安装了 pip、python3-pip、venv、virtualenv 和 setuptools。 如果您正在寻找有关如何在您的 CentOS 7 机器上安装 Python 3 的说明,请查看本教程!
如何安装 SQLAlchemy
Python 虚拟环境
首先,让我们看看在 Python 虚拟环境中安装软件。 最好在安装 SQLAlchemy 之前创建一个 virtualenv(或 venv,具体取决于您的 Python 版本)。 所以,让我们继续这样做吧。
[root@host ~]# virtualenv sqlalchemy
New python executable in sqlalchemy/bin/python
Installing distribute.....................done.
Installing pip................done
[root@host ~]# cd sqlalchemy
[root@host ~]# cd sqlalchemy/
[root@host ~]# source bin/activate
(sqlalchemy) root@host:/home/temp/sqlalchemy#
接下来,安装 SQLAlchemy 的最快方法是使用 Python 包管理器 pip。
[root@host ~]# pip3 install sqlalchemy
Downloading unpacking sqlalchemy
Downloading SQLAlchemy-0.8.1.tar.gz (3.8Mb) : 3.8Mb downloaded
Running setup.py egg_info for package sqlalchemy
.......
no previously included directories found matching 'doc/build/output'
Successfully installed sqlalchemy
Cleaning up....
[root@host ~]#
这会将安装限制在该虚拟环境中,
接下来,我们将演示如何将 SQLAlchemy 和其他必要的软件包安装到 CentOS 和 Ubuntu Linux 服务器上。
中央操作系统
在系统范围内安装 SQLAlchemy 的最简单方法是通过 Python 包管理器 pip。
[root@host ~]# which python3
/usr/bin/python3
[root@host ~]# python3 -m pip install --upgrade pip
(sqlalchemy) [root@host sqlalchemy]# pip3 install sqlalchemy
Collecting sqlalchemy
Downloading https://files.pythonhosted.org/packages/17/7f/35879c73859368ad19a952b69ee780aa97fc30350dabd45fb948d6a4e3ea/SQLAlchemy-1.3.12.tar.gz (6.0MB)
100% |████████████████████████████████| 6.0MB 290kB/s
Installing collected packages: sqlalchemy
Running setup.py install for sqlalchemy ... done
Successfully installed sqlalchemy-1.3.12
(sqlalchemy) [root@host sqlalchemy]#
Ubuntu
同样,安装 SQLAlchemy 的最简单方法是通过 pip。
root@host:~# apt-get install python-pip
Reading package lists... Done
Building dependency tree
Reading state information... Done
Do you want to continue? [Y/n] y
...
...
...
root@host:~#
接下来,我们可以通过 pip 安装 SQLAlchemy。
root@host:~# pip3 install SQLAlchemy
Collecting SQLAlchemy
Downloading https://files.pythonhosted.org/packages/17/7f/35879c73859368ad19a952b69ee780aa97fc30350dabd45fb948d6a4e3ea/SQLAlchemy-1.3.12.tar.gz (6.0MB)
100% |████████████████████████████████| 6.0MB 102kB/s
Building wheels for collected packages: SQLAlchemy
Running setup.py bdist_wheel for SQLAlchemy ... done
Stored in directory: /root/.cache/pip/wheels/ee/33/44/0788a6e806866ae2e246d5cd841d07498a46bcb3f3c42ea5a4
Successfully built SQLAlchemy
Installing collected packages: SQLAlchemy
Successfully installed SQLAlchemy-1.3.12
root@host:~#
然后,我们可以为 PostgreSQL 和 MySQL 安装各种 DBAPI 驱动程序(python-psycopg2、python-mysqldb)。 如果使用 PostgreSQL 和 MySQL,SQLAlchemy 需要这些模块。
root@host:~# apt-get install python-psycopg2
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libpq5 python-egenix-mxdatetime python-egenix-mxtools
Suggested packages:
python-egenix-mxdatetime-dbg python-egenix-mxdatetime-doc python-egenix-mxtools-dbg python-egenix-mxtools-doc
python-psycopg2-doc
The following NEW packages will be installed:
libpq5 python-egenix-mxdatetime python-egenix-mxtools python-psycopg2
0 upgraded, 4 newly installed, 0 to remove and 25 not upgraded.
Need to get 406 kB of archives.
After this operation, 1918 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...
...
...
root@host:~#
root@host:~# apt-get install python-mysqldb
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libmysqlclient20
Suggested packages:
python-mysqldb-dbg
The following NEW packages will be installed:
libmysqlclient20 python-mysqldb
0 upgraded, 2 newly installed, 0 to remove and 25 not upgraded.
Need to get 738 kB of archives.
After this operation, 4187 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...
...
...
root@host:~#
现在,我们将安装 MySQL-server 和 PostgreSQL。
root@host:~# apt-get install mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
mysql-server
0 upgraded, 1 newly installed, 0 to remove and 25 not upgraded.
Need to get 0 B/9940 B of archives.
After this operation, 110 kB of additional disk space will be used.
Selecting previously unselected package mysql-server.
(Reading database ... 108778 files and directories currently installed.)
Preparing to unpack .../mysql-server_5.7.28-0ubuntu0.18.04.4_all.deb ...
Unpacking mysql-server (5.7.28-0ubuntu0.18.04.4) ...
Setting up mysql-server (5.7.28-0ubuntu0.18.04.4) ...
root@host:~#
root@host:~# apt-get install postgresql
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libsensors4 postgresql-10 postgresql-client-10 postgresql-client-common postgresql-common sysstat
Suggested packages:
lm-sensors postgresql-doc locales-all postgresql-doc-10 libjson-perl isag
The following NEW packages will be installed:
libsensors4 postgresql postgresql-10 postgresql-client-10 postgresql-client-common postgresql-common sysstat
0 upgraded, 7 newly installed, 0 to remove and 25 not upgraded.
Need to get 5209 kB of archives.
After this operation, 20.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...
...
...
Success. You can now start the database server using:
/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start
Ver Cluster Port Status Owner Data directory Log file
10 main 5432 down postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: using /usr/share/postgresql/10/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
Setting up postgresql (10+190ubuntu0.1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for ureadahead (0.100.0-21) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for systemd (237-3ubuntu10.33) ...
root@host:~#
现在,我们将安装 sqlite3 命令行界面。
root@host:~# apt-get install sqlite3
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
sqlite3-doc
The following NEW packages will be installed:
sqlite3
0 upgraded, 1 newly installed, 0 to remove and 25 not upgraded.
Need to get 754 kB of archives.
After this operation, 2481 kB of additional disk space will be used.
Get:1 https://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 sqlite3 amd64 3.22.0-1ubuntu0.2 [754 kB]
Fetched 754 kB in 0s (2132 kB/s)
Selecting previously unselected package sqlite3.
(Reading database ... 109582 files and directories currently installed.)
Preparing to unpack .../sqlite3_3.22.0-1ubuntu0.2_amd64.deb ...
Unpacking sqlite3 (3.22.0-1ubuntu0.2) ...
Setting up sqlite3 (3.22.0-1ubuntu0.2) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
root@host:~#
接下来,我们运行“apt-get install python3-dev”命令来安装包含 Python.h 的包。 这是一个头文件,允许我们为 SQLAlchemy 安装 C 扩展加速。
root@host:~# apt-get install python3-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libpython3-dev libpython3.6-dev python3.6-dev
The following NEW packages will be installed:
libpython3-dev libpython3.6-dev python3-dev python3.6-dev
0 upgraded, 4 newly installed, 0 to remove and 25 not upgraded.
Need to get 45.3 MB of archives.
After this operation, 76.7 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
...
...
...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
root@host:~#
现在,运行“python3-setuptools”的安装程序。
root@host:~/sqlalchemy# apt-get install -y python3-setuptools
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
python-setuptools-doc
The following NEW packages will be installed:
python3-setuptools
0 upgraded, 1 newly installed, 0 to remove and 25 not upgraded.
Need to get 248 kB of archives.
After this operation, 1319 kB of additional disk space will be used.
Get:1 https://us.archive.ubuntu.com/ubuntu bionic/main amd64 python3-setuptools all 39.0.1-2 [248 kB]
Fetched 248 kB in 0s (802 kB/s)
Selecting previously unselected package python3-setuptools.
(Reading database ... 109588 files and directories currently installed.)
Preparing to unpack .../python3-setuptools_39.0.1-2_all.deb ...
Unpacking python3-setuptools (39.0.1-2) ...
Setting up python3-setuptools (39.0.1-2) ...
root@host:~/sqlalchemy#
接下来,让我们进入 sqlalchemy 目录并运行 setup.py
root@host:~/sqlalchemy# python3 setup.py install
running install
running bdist_egg
running egg_info
...
...
...
Installed /usr/local/lib/python3.6/dist-packages/SQLAlchemy-1.4.0b1.dev0-py3.6-linux-x86_64.egg
Processing dependencies for SQLAlchemy==1.4.0b1.dev0
Finished processing dependencies for SQLAlchemy==1.4.0b1.dev0
root@host:~/sqlalchemy#
验证 SQLAlchemy 的版本
最后,我们可以验证安装。
[root@host ~]# python3
Python 3.6.8 (default, Aug 7 2019, 17:28:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlalchemy
>>> sqlalchemy.__version__
'1.3.12'
>>> exit()
[root@host ~]#
使用 Git 安装
我们将介绍的最后一种安装方法是使用 git。
root@host:~# git clone https://github.com/sqlalchemy/sqlalchemy.git
Cloning into 'sqlalchemy'...
remote: Enumerating objects: 98, done.
remote: Counting objects: 100% (98/98), done.
remote: Compressing objects: 100% (65/65), done.
remote: Total 154689 (delta 37), reused 81 (delta 20), pack-reused 154591
Receiving objects: 100% (154689/154689), 41.14 MiB | 32.56 MiB/s, done.
Resolving deltas: 100% (116631/116631), done.
root@host:~# cd sqlalchemy/
root@host:~/sqlalchemy# python setup.py install
running install
running bdist_egg
running egg_info
...
...
...
Installed /usr/local/lib/python2.7/dist-packages/SQLAlchemy-1.4.0b1.dev0-py2.7-linux-x86_64.egg
Processing dependencies for SQLAlchemy==1.4.0b1.dev0
Finished processing dependencies for SQLAlchemy==1.4.0b1.dev0
root@host:~/sqlalchemy#
root@host:~/sqlalchemy# python
Python 2.7.17 (default, Nov 7 2019, 10:07:09)
[GCC 7.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlalchemy
>>> sqlalchemy.__version__
'1.4.0b1
为了验证安装并检查我们的 SQLAlchemy 版本,我们将运行以下命令。
root@host:~/sqlalchemy# python
Python 2.7.17 (default, Nov 7 2019, 10:07:09)
[GCC 7.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlalchemy
>>> sqlalchemy.__version__
'1.4.0b1
root@host:~/sqlalchemy#
就是这样! SQLAlchemy 已安装。
附加工具
SQLAlchemy 还包括大量的 额外的工具和配件 扩展您的图书馆和资源,如此处所示。
趁现在还有时间订购!
要获得有利于 SQLAlchemy 的稳定、耐用和尖端平台,请立即联系我们以查看我们可用的全系列专用服务器。 作为奖励,您可以以较低的价格购买安全服务器!
给我们打电话 800.580.4985,或打开 聊天 或与我们联系,与我们知识渊博的解决方案或经验丰富的托管顾问交谈,了解您今天如何利用这项技术!