Python中的数据库函数:连接数据库和查询操作
Python为开发者提供了多种数据库模块来连接和操作不同类型的数据库。本文将介绍如何使用Python来连接数据库和进行查询操作。
1. 连接数据库
对于使用Python进行数据库操作,首先需要使用连接字符串来连接数据库。连接字符串包括数据库类型(MySQL、Oracle、MSSQL等)、主机名、端口号、用户名、密码、数据库名称等信息。连接字符串的格式如下:
conn = pymysql.connect(host='localhost',
user='root',
password='123456',
database='test',
port=3306,
charset='utf8')
这里以MySQL作为例子,pymysql是Python的一个MySQL数据库驱动,需要使用pip安装。另外还可以使用其他数据库驱动,如cx_Oracle、pyodbc等。
使用以上命令可以建立与MySQL数据库服务器的连接,其中host表示主机名,user表示用户名,password表示密码,database表示要连接的数据库名称,port表示要连接的端口号。charset表示字符集编码。
2. 查询操作
2.1 简单查询
在Python中,使用cursor对象来执行SQL语句并获得查询结果。可以使用以下语句来查询数据库:
cursor = conn.cursor() # 创建游标对象
cursor.execute("SELECT * FROM t_users") # 执行SQL语句
result = cursor.fetchall() # 获取查询结果
以上语句表示查询t_users表中的所有记录。由于要获取表中的所有记录,因此使用了fetchall()方法,该方法返回所有查询结果。其他方法还包括fetchone()和fetchmany(),分别表示获取一条记录和获取多条记录。
2.2 参数化查询
在实际开发中,很多时候需要使用参数化查询来防止SQL注入攻击。SQL注入攻击是一种攻击类型,攻击者在请求URL或表单中注入SQL语句,从而查询、修改或删除数据库中的数据。以下是使用参数化查询的示例代码:
cursor = conn.cursor() # 创建游标对象
sql = "SELECT * FROM t_users WHERE username=%s" # SQL语句
cursor.execute(sql, ('tom', )) # 执行SQL语句并传入参数
result = cursor.fetchall() # 获取查询结果
以上代码表示查询用户名为tom的用户信息。第二个参数传入了元组('tom', ),该元组中只有一个元素表示查询条件。注意,元组中必须使用逗号将元素隔开。
2.3 处理查询结果
在获取查询结果时,返回的是一个元组,每个元素表示一条记录,每个字段以相应名称作为键值对存在其中。可以使用以下代码对查询结果进行处理:
for row in result:
username = row['username']
password = row['password']
print(username, password)
以上代码表示遍历查询结果,并提取其中的用户名和密码,最后打印出来。
总结
Python提供了多种模块来连接和操作不同数据库,本文以MySQL为例介绍了如何连接MySQL数据库和进行查询操作。在实际开发中,应该使用参数化查询来防止SQL注入攻击,同时还需要对查询结果进行处理来达到预期的结果。
