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
))