5.4使用Connector/Python查询数据

下面的示例演示如何执行此操作查询使用使用连接创建的游标的数据光标()方法。返回的数据被格式化并打印在控制台上。

任务是选择1999年雇用的所有雇员,并将他们的姓名和雇用日期打印到控制台。

导入datetime导入mysql。连接器CNX = mysql.connector。connect(user='scott', database='employees') cursor = cnx.cursor() query = ("SELECT first_name, last_name, hire_date FROM employees " "WHERE hire_date BETWEEN %s AND %s") hire_start = datetime。日期(1999,1,1)hire_end =日期时间。日期(1999,12,31)游标。execute(query, (hire_start, hire_end)) for (first_name, last_name, hire_date) in cursor: print("{}, {} was hired on {:%d %b %Y}"。Format (last_name, first_name, hire_date)) cursor.close()

我们首先打开到MySQL服务器的连接并存储连接对象在变量中cnx.然后创建一个新的游标,默认为aMySQLCursor对象,使用连接的光标()方法。

在前面的示例中,我们存储选择语句。查询.注意,我们使用的是un引号% s-标记日期的地方。连接器/ Python转换hire_start而且hire_end从Python类型转换为MySQL能够理解的数据类型,并添加所需的引号。在本例中,它取代了第一个% s“1999-01-01”,第二个用“1999-12-31”

对象中存储的操作查询变量使用execute ()方法。用于替换的数据% s-markers作为元组传递:(hire_start hire_end)

执行查询之后,MySQL服务器就可以发送数据了。结果集可以是0行、1行或1亿行。根据预期的容量,您可以使用不同的技术来处理这个结果集。在本例中,我们使用光标对象作为迭代器。行中的第一列存储在变量中first_name,第二last_name第三个在hire_date

我们打印结果,使用Python内置的格式化输出format ()函数。请注意,hire_date被Connector/Python自动转换为Pythondatetime.date对象。这意味着我们可以轻松地将日期格式化为更容易读懂的形式。

输出应该是这样的:

..Wilharm, LiMin在1999年12月16日被雇用,Wielonsky, Lalit在1999年12月16日被雇用Kamble, Dannz在1999年12月18日被雇用DuBourdieux, Zhongwei在1999年12月19日被雇用Fujisawa, Rosita在1999年12月20日被雇用。