Как получить столбцы из запроса в python?

У меня есть этот запрос в pythonпрограмме:

И я должен создать многомерный массив (если это возможно) или четыре массива из этого запроса для каждого столбца из запроса.

Можете ли вы предложить элегантный способ его решения?

conn = #connection to the server
cursor=conn.cursor()
query = (" select id, name, phone, city from guest")

cursor.execute(query)
results = cursor.fetchall
for i in results:
     print i
cursor.close()
conn.close()

python,mysql-python,

-2

Ответов: 1


-1

Не изящно, но может помочь разгадать загадочный класс курсора коннектора Python и передать список кортежей (см. Комментарий Copperfield) с данными из запроса в список (список телефонов) словарей (записей) с подробными сведениями о каждой записи в базы данных, с которой может быть проще работать в вашем скрипте python:

# ref: https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor.html
import mysql.connector

db = 'test'
table = 'phonebook'
phoneList = []

drop_table   = ("DROP TABLE IF EXISTS {};").format(table)
# By default, the starting value for AUTO_INCREMENT is 1, and it will increment by 1 for each new record.
# To let the AUTO_INCREMENT sequence start with another value, use the following SQL statement:
# ALTER TABLE phonebook AUTO_INCREMENT=100;
create_table = ("CREATE TABLE {} ("
            "id int NOT NULL AUTO_INCREMENT,"
            "name varchar(30) NOT NULL,"
            "phone varchar(30) NOT NULL,"
            "city  varchar(30) NOT NULL,"
            "PRIMARY KEY (id))"
            " ENGINE=InnoDB DEFAULT CHARSET=latin1;").format(table)

Names = {'Bill':{'phone':'55123123','city':'Melbourne'},
     'Mary':{'phone':'77111123','city':'Sydney'},
     'Sue':{'phone':'55888123','city':'Melbourne'},
     'Harry':{'phone':'77777123','city':'Sydney'},
     'Fred':{'phone':'88123444','city':'Yongala'},
     'Peter':{'phone':'55999123','city':'Melbourne'}}


cnx = mysql.connector.connect(user='mysqluser', password='xxxx',host='127.0.0.1',database=db)
cursor = cnx.cursor(dictionary=True)  # key to using **row format
cursor.execute(drop_table)
cursor.execute(create_table)
# populate db
for name,detail in dict.items(Names):
    sql = ("INSERT INTO {} (name,phone,city) VALUES ('{}','{}','{}')".format(table,name,detail['phone'],detail['city']))
    cursor.execute(sql)

sql = ("SELECT id,name,phone,city FROM {}".format(table))
cursor.execute(sql)

for row in cursor:
    print("{id} {name} {phone} {city}".format(**row))
    phoneList.append(row)

print phoneList[0]['name'],phoneList[0]['city']
print phoneList[3]['name'],phoneList[3]['phone']


for entries in phoneList: # list of dictionaries
    print entries['name'],entries

for entries in phoneList:
    for k,v in dict.items(entries):
        print k,v
    print "
"

cnx.close()
Python, MySQL-питон,
Похожие вопросы