Python:Connector/Python 怎样查询数据库和获取数据
最近更新时间 2020-12-01 10:37:57
本篇文章主要介绍怎样使用 Connector/Python 的 cursor() 方法查询获取数据,以及读取格式化返回的结果集。
使用 MySQLCursor 对象
按条件查询数据库,查询登录时间在 2019 年的所有数据并返回名称、登录时间等信息。
import datetime
import mysql.connector
cnx = mysql.connector.connect(user='login', database='login')
cursor = cnx.cursor()
query = ("SELECT name, login_date FROM login "
"WHERE login_date BETWEEN %s AND %s")
login_start = datetime.date(2019, 1, 1)
login_end = datetime.date(2019, 12, 31)
cursor.execute(query, (login_start, login_end))
for (name, login_date) in cursor:
print("{} login {:%d %b %Y}".format(
name, login_date))
cursor.close()
cnx.close()
通过 connect() 方法连接 MySQL 数据库,获取 conneciton 对象赋值给 cnx。调用 cnx 的 cursor() 方法获取一个 MySQLCursor 对象。
执行 MySQLCursor 对象的 execute() 方法后,结果集会保存在 cursor 变量中,通过遍历 cursor 获取返回的数据。
使用 MySQLCursorRaw 对象
设置为 MySQLCursorRaw 后,cursor 不会自动把 MySQL 数据类型自动转换为 Python 类型,使用这种对象一般是为了获取更好的性能,获取结果后自己进行数据转换。
import mysql.connector
cnx = mysql.connector.connect()
# Only this particular cursor will be raw
cursor = cnx.cursor(raw=True)
# All cursors created from cnx2 will be raw by default
cnx2 = mysql.connector.connect(raw=True)
使用 MySQLCursorDict 对象
MySQLCursorDict 类继承 MySQLCursor。在 Connector/Python 2.0.0 以后支持。
MySQLCursorDict 会处理结果集为字典对象,列名为字典的 Key 值,通过列名直接获取数据。
cnx = mysql.connector.connect(database='world')
cursor = cnx.cursor(dictionary=True)
cursor.execute("SELECT * FROM country WHERE Continent = 'Europe'")
print("Countries in Europe:")
for row in cursor:
print("* {Name}".format(Name=row['Name']
可使用 format() 方法格式化数据。
cursor.execute("SELECT Name, Population FROM country WHERE Continent = 'Europe'")
print("Countries in Europe with population:")
for row in cursor:
print("* {Name}: {Population}".format(**row))
使用 MySQLCursorNamedTuple 对象
MySQLCursorNamedTuple 类继承 MySQLCursor。在 Connector/Python 2.0.0 以后支持。
MySQLCursorNamedTuple 会处理结果集为 tuple。named-tuple 为 SQL 语句的列名称。
cnx = mysql.connector.connect(database='world')
cursor = cnx.cursor(named_tuple=True)
cursor.execute("SELECT * FROM country WHERE Continent = 'Europe'")
print("Countries in Europe with population:")
for row in cursor:
print("* {Name}: {Population}".format(
Name=row.Name,
Population=row.Population
))