如何在Python中连接数据库?
在Python开发中,数据库连接是一个必不可少的部分。在大多数应用程序中,我们需要从数据源中获取数据并使用它们。在这里,我们将介绍如何在Python中连接数据库,并讨论几个常用的Python数据库驱动程序。
阅读更多:Python 教程
Python数据库驱动程序
Python支持多种SQL服务器和NoSQL数据库。以下是一些常见的Python数据库驱动程序:
除此之外,还有很多其他的数据库驱动程序。在这篇文章中,我们将深入探讨两种最受欢迎的Python数据库驱动程序:MySQL-Python和pyodbc。
使用MySQL-Python连接数据库
MySQL-Python是Python连接MySQL数据库的常用模块。它提供了一个Python接口,使得连接和MySQL服务器之间的通信变得简单而直接。
安装MySQL-Python
在连接MySQL数据库之前,我们需要安装MySQL-Python模块。您可以使用pip包管理器来安装MySQL-Python,如下所示:
!pip install MySQL-Python
配置MySQL数据库
在连接到MySQL数据库之前,我们需要确保MySQL服务器已启动,并且数据库已成功连接。如果您使用的是本地MySQL服务器,则可以跳过此步骤。否则,您需要进行一些配置以确保您的Python程序可以连接到MySQL服务器。
创建数据库和表格
可以使用以下命令在MySQL命令行中创建数据库和表。请确保已安装MySQL服务器并以root用户身份登录。
mysql> CREATE DATABASE testdb;
mysql> USE testdb;
mysql> CREATE TABLE employees (id INT PRIMARY KEY, name VARCHAR(20));
这将创建一个名为“testdb”的数据库以及一个名为“employees”的表,该表包含两列:id和name。id列是主键列,唯一标识每个员工。
mysql
连接到MySQL数据库
在Python中连接到MySQL数据库很容易。我们只需要使用MySQLdb模块中的connect()函数。以下是一个示例:
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost", "root", "password", "testdb")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 查询语句
sql = "SELECT * FROM employees"
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
id = row[0]
name = row[1]
# 打印结果
print("id=%s,name=%s" % (id, name))
# 关闭数据库连接
db.close()
在这里,我们打开到localhost的MySQL服务器的连接,并选择testdb数据库。并使用cursor()方法获取操作游标。然后,执行SQL查询语句并获取结果。最后,我们循环遍历结果,并打印出每一条数据。
如果连接成功,则最后输出的结果应为以下内容:
id=1,name=Tom
id=2,name=Jerry
id=3,name=Kate
提交更改
在MySQL数据库中执行更新、插入或删除操作后,更改不会立即生效。相反,它们被缓冲在MySQL服务器上。要使更改生效,请使用commit()函数提交数据库更改。
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost", "root", "password", "testdb")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 查询语句
sql = "INSERT INTO employees(id, name) VALUES(4, 'Mike')"
try:
# 执行SQL语句
cursor.execute(sql)
# 提交更改
db.commit()
print("数据插入成功")
except:
# 发生错误时回滚
db.rollback()
print("数据插入失败")
# 关闭数据库连接db.close()
在这里,我们插入了一条新的数据,并使用commit()函数提交了更改。如果插入成功,则会输出“数据插入成功”。
错误处理
在连接到MySQL数据库时,可能会遇到许多不同类型的错误。当发生错误时,我们需要对其进行处理,以便适当地处理错误。
import MySQLdb
try:
# 打开数据库连接
db = MySQLdb.connect("localhost", "root", "xxxxx", "testdb")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 查询语句
sql = "SELECT * FROM employees"
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
id = row[0]
name = row[1]
# 打印结果
print("id=%s,name=%s" % (id, name))
# 关闭数据库连接
db.close()
except MySQLdb.Error as e:
print("Error %d: %s" % (e.args[0], e.args[1]))
在这里,我们使用try和except语句块来处理MySQLdb.Error异常。如果连接到MySQL服务器时出现错误,程序将打印一个错误消息。
使用pyodbc连接数据库
pyodbc是Python连接多个数据库类型的库。它可以通过ODBC驱动程序连接到各种数据库,如Microsoft SQL Server、Oracle、IBM DB2等。
安装pyodbc
在连接到数据库之前,我们需要安装pyodbc库。您可以使用pip包管理器来安装pyodbc,如下所示:
!pip install pyodbc
连接到数据库
使用pyodbc连接到数据库也很容易。我们只需要提供有关数据库和odbc驱动程序的信息即可。以下是一个使用pyodbc连接到Microsoft SQL Server数据库的示例代码:
import pyodbc
# 配置odbc驱动程序名称,DSN(Data Soource Name)和端口号
ODBC_DRIVER = '{ODBC Driver 17 for SQL Server}'
# 在SQL Server Configuration Manager中添加的DSN名称
ODBC_SERVER = 'sqlserverserver'
ODBC_PORT = '1433'
ODBC_DATABASE = 'dbname'
# SQL Server 用户名和密码
ODBC_UID = 'username'
ODBC_PWD = 'password'
try:
# 配置数据库信息
conn_info = 'DRIVER={driver};SERVER={server},{port};DATABASE={database};UID={username};PWD={password}'.format(
driver=ODBC_DRIVER, server=ODBC_SERVER, port=ODBC_PORT, database=ODBC_DATABASE, username=ODBC_UID, password=ODBC_PWD)
# 连接到数据库
conn = pyodbc.connect(conn_info)
# 创建游标
cursor = conn.cursor()
# 执行查询
cursor.execute("SELECT TOP 10 * FROM users")
# 遍历结果
for row in cursor:
print(row)
# 关闭连接
conn.close()
except pyodbc.Error as ex:
# 打印错误信息
print(str(ex))
在这里,我们通过提供有关数据库和odbc驱动程序的信息来连接到Microsoft SQL Server数据库,并使用pyodbc建立与该数据库的连接。然后,我们创建一个游标,并执行一个查询,并使用for循环遍历查询结果。最后,我们关闭连接。
使用DSN连接到数据库
另一种方法是使用DSN(Data Source Name)连接到数据库,这是一种具有可读性的格式,可包含有关连接数据库的信息。
import pyodbc
# DSN的名称
DSN = 'odbc_datasource'
# 查询
SQL = "SELECT TOP 10 * FROM users"
try:
# 连接到数据库
conn = pyodbc.connect('DSN={0}'.format(DSN))
# 创建游标
cursor = conn.cursor()
# 执行查询
cursor.execute(SQL)
# 遍历结果
for row in cursor:
print(row)
# 关闭连接
conn.close()
except pyodbc.Error as ex:
# 打印错误信息
print(str(ex))
在这里,我们使用DSN连接到数据库。我们提供一个DSN的名称,然后使用pyodbc.connect()函数连接到数据库。我们创建一个游标,执行查询,并使用for循环遍历查询结果。最后,我们关闭连接。
结论
在这篇文章中,我们讨论了如何在Python中连接数据库。我们深入探讨了两种最受欢迎的Python数据库驱动程序:MySQL-Python和pyodbc。我们了解了如何安装和配置这些模块,并给出了连接到数据库的示例代码。此外,我们还研究了提交更改、错误处理以及使用DSN连接到数据库的方法。希望这篇文章能够帮助您成功地连接到数据库并提取所需的数据。