【发布时间】:2016-06-13 06:08:47
【问题描述】:
我在 Python 脚本中使用 MySQL 提供的 MySQL 连接器。我可以成功查询数据,但是,建立回报给我带来了一些问题。
这是一个基本的数据库表
CREATE TABLE users(
uuid char(64) not null primary key,
firstname varchar(32) not null,
lastname varchar(32) not null,
email varchar(64) not null,
user_name varchar(32) not null,
password varchar(64) not null
);
INSERT INTO users VALUES
('7503637e-b8a7-44c2-822b-69ccb8ebfae0', 'Andy' , 'Apple' , 'aapple@thatcompany.com' , 'aaple' , 'abc123')
这是一个简单的 Python 脚本
import mysql.connector
config = {
'host' : '127.0.0.1',
'user': 'root',
'password' : 'password',
'database' : 'database'
}
fields = ('uuid', 'firstname', 'lastname')
query = 'SELECT ' + ', '.join(fields) + ' FROM users'
cnx = mysql.connector.connect(**mysqlConfig)
cursor = cnx.cursor()
cursor.execute(query)
results = {}
for (uuid, firstname, lastname) in cursor:
results[uuid] = {
'first_name': firstname,
'last_name' : lastname
}
cursor.close()
cnx.close()
虽然这可行,但我正在尝试找出一种动态构建结果变量的方法。我不想在 for 循环中的 fields 变量和元组中都添加一个新的字段名称。
我一直在尝试找出一种使用此代码完成此任务的方法
columnNames = cursor.column_names
# columnNames = (u'uuid', u'fname', u'lname')
但是,cursor.column_names 返回一个字符串元组。
如何构建一个包含在“字段”变量中找到的值的结果字典,而不必在两个不同的地方添加新的列名?
【问题讨论】: