Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 17, 2015 19:17:03

Suguby27
Зарегистрирован: 2015-04-07
Сообщения: 26
Репутация: +  4  -
Профиль   Отправить e-mail  

Python mysql {'колонка':'значение'}

Egor2010
Пытался разобраться в чем проблема.
Сделай
def query(sql):
    db = MySQLdb.connect(host="localhost", user="root", passwd="", db="")
    cursor = db.cursor()
    cursor.execute(sql)
    data = cursor.fetchall()
    print cursor.description
    db.close()
в распечатке пойми что это за тип данных и где находится имя колонки. А вообще камрад PooH подсказал что уже есть
cursor = db.cursor(MySQLdb.cursors.DictCursor)
используй лучше его.

4kpt_III
Как будто peewee - это ядреный прорыв в идеологии построения ОРМ, а алхимия это уже так, каменный век.
Для простых задачек типа домашней странички или для буха запилить отчет - простой орм лучше. Для чего-то сложного - алхимия (но я её не понял, если чесно, очень наворочена и доков минимум - было два года назад). А для высоких нагрузок - увы только нативный коннектор. Имхо. И давайте уже холивар заканчивать Всем - счастья в программировании!

Отредактировано Suguby27 (Апрель 17, 2015 19:17:24)

Офлайн

#2 Апрель 17, 2015 20:05:56

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Python mysql {'колонка':'значение'}

Suguby27
очень наворочена и доков минимум

Можно и закончить холивар, но только одно “но”. Документации все же больше чем на 900 страниц, мне кажется, достаточно.

Офлайн

#3 Апрель 18, 2015 04:50:24

Egor2010
Зарегистрирован: 2014-10-22
Сообщения: 152
Репутация: +  0  -
Профиль   Отправить e-mail  

Python mysql {'колонка':'значение'}

Suguby27
Я хочу сравнить два способа,
Сделал как вы сказали
mport MySQLdb
sql="select * from users"
def query(sql):
db = MySQLdb.connect(host="localhost", user="root", passwd="", db="")
cursor = db.cursor()
cursor.execute(sql)
data = cursor.fetchall()
print cursor.description[i][0]
db.close()
i это колонка
Какой цикл нужен для формирования массива?

Отредактировано Egor2010 (Апрель 18, 2015 06:04:29)

Офлайн

#4 Апрель 20, 2015 12:36:51

Suguby27
Зарегистрирован: 2015-04-07
Сообщения: 26
Репутация: +  4  -
Профиль   Отправить e-mail  

Python mysql {'колонка':'значение'}

print cursor.description[i][0]
то есть на первом месте стоит имя колонки? отлично

тогда делай так (внутри цикла по строкам резалт-сета)
for i, column in enumerate(cursor.description):
    name = column[0]
    value = row[i]
получили название колонки и её значение - теперь надо все засунуть в словарь. Сможешь сам?
(если не знаешь что за enumerate - смотри доки)
(цикл по строкам резалт-сета - UPD http://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-fetchone.html - давно с сырым коннектором не работал…)

Отредактировано Suguby27 (Апрель 20, 2015 15:35:55)

Офлайн

#5 Апрель 22, 2015 04:29:10

Egor2010
Зарегистрирован: 2014-10-22
Сообщения: 152
Репутация: +  0  -
Профиль   Отправить e-mail  

Python mysql {'колонка':'значение'}

сделал это вот-так:

columns = [name[0] for name in cursor.description]
data=[]
for row in cursor:
data.append(dict(zip(columns, row)))
return data
плох или хорош этот код?

Офлайн

#6 Апрель 22, 2015 12:46:36

Suguby27
Зарегистрирован: 2015-04-07
Сообщения: 26
Репутация: +  4  -
Профиль   Отправить e-mail  

Python mysql {'колонка':'значение'}

Вполне хорош я такой у себя где-то видел…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version