# 连接到数据库
> 原文: [https://thepythonguru.com/connecting-to-the-database/](https://thepythonguru.com/connecting-to-the-database/)
* * *
于 2020 年 1 月 7 日更新
* * *
在我们开始将数据库与 python 一起使用之前,必须先连接到数据库。 与 python 的数据库通信分为四个阶段:
1. 创建一个连接对象。
2. 创建一个游标对象以进行读取/写入。
3. 与数据库进行交互。
4. 关闭连接。
**注意**:
我们将使用世界 mysql 数据库,因此首先[下载](http://188.166.96.119/wp-content/uploads/2015/10/world.sql_.zip)并导入数据库,如下所示:
首次登录到您的 mysql 服务器
```py
mysql -u root -p
```
此时将要求您输入密码,输入密码,然后按`Enter`键。
```py
source path/to/world.sql
```
## 连接到数据库
* * *
要连接到数据库,您需要使用`connect()`方法。
**语法**:
```py
MySQLdb.connect(
host="127.0.0.1",
user="username",
passwd="password",
db="database"
)
```
成功后,`connect()`方法将返回一个连接对象。 否则,将引发`OperationalError`异常。
```py
from __future__ import print_function
import MySQLdb as my
db = my.connect(host="127.0.0.1",
user="root",
passwd="",
db="world"
)
print(db)
```
注意第一行`import print_function from __future__`中的`import`语句,这使我们能够在 Python 2 中使用 Python 3 版本的`print()`函数。
**预期输出**:
```py
<_mysql.connection open to '127.0.0.1' at 21fe6f0>
```
## 创建游标对象
* * *
开始与数据库进行交互之前,需要创建游标对象。
**语法**:`connection_object.cursor()`
成功时,它将返回`Cursor`对象,否则将引发异常。
```py
from __future__ import print_function
import MySQLdb as my
db = my.connect(host="127.0.0.1",
user="root",
passwd="",
db="world"
)
print(db)
cursor = db.cursor()
print(cursor)
```
**预期输出**:
```py
<_mysql.connection open to '127.0.0.1' at 239e2c0>
<MySQLdb.cursors.Cursor object at 0x02444AD0>
```
## 与数据库交互
* * *
游标对象具有`execute()`方法,可用于执行 sql 查询。
**语法**:`cursor.execute(sql)`
成功后,它将返回受影响的行数,否则将引发异常。
```py
from __future__ import print_function
import MySQLdb as my
db = my.connect(host="127.0.0.1",
user="root",
passwd="",
db="world"
)
print(db)
cursor = db.cursor()
number_of_rows = cursor.execute("select * from city");
print(number_of_rows)
```
**预期输出**:
```py
4079
```
## 断开连接
* * *
与数据库进行交互之后,您需要关闭数据库连接以放弃资源。
**语法**:`connection_object.close()`
```py
from __future__ import print_function
import MySQLdb as my
db = my.connect(host="127.0.0.1",
user="root",
passwd="",
db="world"
)
print(db)
cursor = db.cursor()
number_of_rows = cursor.execute("select * from city");
print(number_of_rows)
db.close()
```
现在您知道了如何与数据库连接,执行查询并关闭连接。 在下一篇文章中,我们讨论如何[从表](/mysqldb-fetching-results/)中获取行。
* * *
* * *
- 初级 Python
- python 入门
- 安装 Python3
- 运行 python 程序
- 数据类型和变量
- Python 数字
- Python 字符串
- Python 列表
- Python 字典
- Python 元组
- 数据类型转换
- Python 控制语句
- Python 函数
- Python 循环
- Python 数学函数
- Python 生成随机数
- Python 文件处理
- Python 对象和类
- Python 运算符重载
- Python 继承与多态
- Python 异常处理
- Python 模块
- 高级 Python
- Python *args和**kwargs
- Python 生成器
- Python 正则表达式
- 使用 PIP 在 python 中安装包
- Python virtualenv指南
- Python 递归函数
- __name__ == "__main__"是什么?
- Python Lambda 函数
- Python 字符串格式化
- Python 内置函数和方法
- Python abs()函数
- Python bin()函数
- Python id()函数
- Python map()函数
- Python zip()函数
- Python filter()函数
- Python reduce()函数
- Python sorted()函数
- Python enumerate()函数
- Python reversed()函数
- Python range()函数
- Python sum()函数
- Python max()函数
- Python min()函数
- Python eval()函数
- Python len()函数
- Python ord()函数
- Python chr()函数
- Python any()函数
- Python all()函数
- Python globals()函数
- Python locals()函数
- 数据库访问
- 安装 Python MySQLdb
- 连接到数据库
- MySQLdb 获取结果
- 插入行
- 处理错误
- 使用fetchone()和fetchmany()获取记录
- 常见做法
- Python:如何读取和写入文件
- Python:如何读取和写入 CSV 文件
- 用 Python 读写 JSON
- 用 Python 转储对象