Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3496 posts.

Django » Обновление MPTT дерева из JSON » Фев. 11, 2013 11:37:36

Добрый день!

Необходимо сделать на фронте редактирование Django MPTT-древа (сортировка, изменение родителей). Нашел jquery плагин Nestable (http://dbushell.github.com/Nestable/), который вполне подходит. Но при изменении древа я могу получить только JSON этого древа в таком формате:

[{
    "id": 1
}, {
    "id": 2,
    "children": [{
        "id": 3
    }, {
        "id": 4
    }, {
        "id": 5,
        "children": [{
            "id": 6
        }, {
            "id": 7
        }, {
            "id": 8
        }]
    }, {
        "id": 9
    }, {
        "id": 10
    }]
}, {
    "id": 11
}, {
    "id": 12
}]

Как я могу обновить свое древо в бд, чтобы оно соответствовало этой JSON-структуре?

Или может быть кто подскажет другой jQuery-плагин, с которым это будет проще сделать?

Спасибо!

Базы данных » QComboBox+mapper возвращает индекс вместо текста » Фев. 10, 2013 15:57:35

from PyQt4 import QtGui,  QtSql,  QtCore
import os.path
 
class window1(QtGui.QWidget):
    def __init__(self,  titletext):
        QtGui.QWidget.__init__(self)
        self.resize(800,  600)
        self.setWindowTitle(titletext)
 
        self.OpenOrCreateDB() #подключаемся к БД или создаём новую БД
 
        self.layout1 = QtGui.QVBoxLayout() # создаём контейнер для расположения в нём других виджетов
        self.setLayout(self.layout1) # назначаем его основным для нашей формы (окна)
 
        self.model1 = QtSql.QSqlTableModel(None,  self.DB) #создаём модель для хранения строк из БД, указываем с какой БД ей работать
        self.model1.setTable("table1") # указываем нужную таблицу из БД
        self.model1.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit) # данные сохраняются в БД посредством этой модели, только по команде
        self.model1.select() # запускаем комаду select, для выборки всех записей из указанной таблицы БД
        self.tableView1 = QtGui.QTableView() # создаём грид (таблицу для отображения данных из модели) для формы
        self.tableView1.setModel(self.model1) # указываем гриду из какой модели брать данные для отображения
        self.tableView1.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers) #таким зашибенным способом запрещается редактирование ячеек пользователем
        self.layout1.addWidget(self.tableView1)
 
        self.btnNew = QtGui.QPushButton("Добавить новую строку в БД") #создаём кнопку
        self.btnNew.clicked.connect(self.btnNewClicked) # связываем событие нажатия на кнопку с обработчиком для этого события
        self.layout1.addWidget(self.btnNew) # добавляем её в контейнер на форме
 
        self.btnEdit = QtGui.QPushButton("Редактировать текущую строку БД")
        self.btnEdit.clicked.connect(self.btnEditClicked)
        self.layout1.addWidget(self.btnEdit)
 
    def btnNewClicked(self):
        self.OpenEditWindow("NEW")
 
    def btnEditClicked(self):
        self.OpenEditWindow("EDIT")
 
    def OpenEditWindow(self, NewOrEdit):
        secondwindow = window2(NewOrEdit,  self.tableView1.currentIndex().row())
        result = secondwindow.exec() # если здесь использовать show, то окно не будет модальным! Т.е. из него можно будет спокойно перейти в другое окно.
        print (result)
 
    def OpenOrCreateDB(self):
        #создаём объект для работы с БД
        self.DB = QtSql.QSqlDatabase.addDatabase("QSQLITE", "Base")
        self.DB.setDatabaseName("./SQLiteBase/Lesson16DB.db")
 
        existDB = os.path.exists("./SQLiteBase/Lesson16DB.db")  #проверяем физичиское наличие БД
        if not existDB: print ("БД не существует. Попытка создать новую БД...")
 
        if not self.DB.open(): #попытка открыть БД (она же создание новой БД, если файла БД не существует)
            print("БД не открылась! Ошибка:",  self.DB.lastError().text())
        else: #подключение к БД произошло. Если при этом была создана новая БД, нужно создать в ней таблицы
            if not existDB: self.CreateStructureOfNewDB()
 
    def CreateStructureOfNewDB(self):
        query = QtSql.QSqlQuery(self.DB)
        querytext = ("CREATE TABLE table1 ("
                                           "id INTEGER, "
                                           "fam VARCHAR(20), "
                                           "im VARCHAR(20), "
                                           "ot VARCHAR(20), "
                                           "dr DATE, "
                                           "pol VARCHAR(1), "
                                           "gorod VARCHAR(20)"
                                           ")")
        #print (querytext)
        errors = 0
        tmp = query.exec(querytext)
        if not tmp:
            errors = errors + 1
 
        querytext = ("CREATE TABLE spisok1 ("
                     "id INTEGER, "
                     "text VARCHAR(20)"
                     ")")
 
        tmp = query.exec(querytext)
        if not tmp:
            errors = errors + 1
 
        return tmp
        if errors > 1:
            print ("БД не создана! Ошибка: ",  self.DB.lastError().text())
            return False
        else: return True
 
class window2(QtGui.QDialog): # создаём окно типа Диалог
    def __init__(self,  NewOrEdit,  currentIndex_):
        QtGui.QDialog.__init__(self)
 
        self.mapper = QtGui.QDataWidgetMapper() #маппер для связки данных из модели с контролами
        self.mapper.setModel(windowmain.model1) #связываем его с моделью данных из объекта windowmain
        self.mapper.setSubmitPolicy(QtGui.QDataWidgetMapper.ManualSubmit) #обновление данных в модели будет произведено только по команде
 
        tmpstr = NewOrEdit
        if NewOrEdit == "NEW":
            tmpstr = "Добавление новой записи в БД"
            Record = windowmain.model1.record() #создаём объект типа рекорд для добавления строки в модель
            windowmain.model1.insertRecord(-1,  Record) #insertRow использовать не стоит! Он не поддерживает связанные таблицы! 
            self.mapper.toLast() #маппер тоже передвигаем к последней записи!
        elif NewOrEdit == "EDIT":
            tmpstr = "Редактирование записи"
        self.setWindowTitle(tmpstr)
        #self.setWindowModality(QtCore.Qt.WindowModal)
 
        self.layout2 = QtGui.QHBoxLayout()
        self.layout2_1 = QtGui.QVBoxLayout()
        self.layout2.addLayout(self.layout2_1)
        self.layout2_2 = QtGui.QVBoxLayout()
        self.layout2.addLayout(self.layout2_2)
        self.layout2_3 = QtGui.QHBoxLayout()
        self.layout2.addLayout(self.layout2_3)
        self.setLayout(self.layout2)
 
 
        Alignment = QtCore.Qt.AlignTop
 
        self.id_label = QtGui.QLabel("Номер")
        self.id_ = QtGui.QLineEdit()
        self.layout2_1.addWidget(self.id_label,  alignment = Alignment)
        self.layout2_2.addWidget(self.id_,  alignment = Alignment)
        self.mapper.addMapping(self.id_,  windowmain.model1.fieldIndex("id")) #связываем контрол id_ с полем id из маппера, который передаст значение в модель, которая передаст в БД (вот такие тут все передасты!)
 
        self.fam_label = QtGui.QLabel("Фамилия")
        self.fam_ = QtGui.QLineEdit()
        self.layout2_1.addWidget(self.fam_label,  alignment = Alignment)
        self.layout2_2.addWidget(self.fam_,  alignment = Alignment)
        self.mapper.addMapping(self.fam_,  windowmain.model1.fieldIndex("fam"))
 
        self.im_label = QtGui.QLabel("Имя")
        self.im_ = QtGui.QLineEdit()
        self.layout2_1.addWidget(self.im_label,  alignment = Alignment)
        self.layout2_2.addWidget(self.im_,  alignment = Alignment)
        self.mapper.addMapping(self.im_,  windowmain.model1.fieldIndex("im"))
 
        self.ot_label = QtGui.QLabel("Отчество")
        self.ot_ = QtGui.QLineEdit()
        self.layout2_1.addWidget(self.ot_label,  alignment = Alignment)
        self.layout2_2.addWidget(self.ot_,  alignment = Alignment)
        self.mapper.addMapping(self.ot_,  windowmain.model1.fieldIndex("ot"))
 
        self.dr_label = QtGui.QLabel("Дата рождения")
        self.dr_ = QtGui.QLineEdit()
        self.layout2_1.addWidget(self.dr_label,  alignment = Alignment)
        self.layout2_2.addWidget(self.dr_,  alignment = Alignment)
        self.mapper.addMapping(self.dr_,  windowmain.model1.fieldIndex("dr"))
 
        self.pol_label = QtGui.QLabel("Пол")
        self.pol_ = QtGui.QLineEdit()
        self.layout2_1.addWidget(self.pol_label,  alignment = Alignment)
        self.layout2_2.addWidget(self.pol_,  alignment = Alignment)
        self.mapper.addMapping(self.pol_,  windowmain.model1.fieldIndex("pol"))
 
        self.gorod_label = QtGui.QLabel("Город")
        self.gorod_ = QtGui.QComboBox()
        #создаём модель для комбобокса
        self.gorodModel = QtSql.QSqlTableModel(None,  windowmain.DB)
        self.gorodModel.setTable("spisok1")
        self.gorodModel.select()
        self.gorod_.setModel(self.gorodModel)
        self.gorod_.setModelColumn(1)
        self.layout2_1.addWidget(self.gorod_label,  alignment = Alignment)
        self.layout2_2.addWidget(self.gorod_,  alignment = Alignment)
        self.mapper.addMapping(self.gorod_,  windowmain.model1.fieldIndex("gorod"))
 
        self.btnSave = QtGui.QPushButton("Запомнить")
        self.btnSave.clicked.connect(self.SaveData)
        self.layout2_3.addWidget(self.btnSave,  alignment = QtCore.Qt.AlignRight)
 
 
        self.btnCancel = QtGui.QPushButton("Отменить")
        self.btnCancel.clicked.connect(self.Cancel)
        self.layout2_3.addWidget(self.btnCancel,  alignment = QtCore.Qt.AlignRight)
 
        if NewOrEdit == "EDIT":
            self.mapper.setCurrentIndex(currentIndex_) # Этот способ выбора текущей строки из модели нужно проерить. Что будет, если данные в модели будут отсортированы?
 
    def SaveData(self):
        self.mapper.submit() #сохраняем изменения в модели
        windowmain.model1.submitAll() # а теперь сохраняем изменения из модели в БД
        self.close()
 
    def Cancel(self):
        windowmain.model1.revertAll() #отменяем изменения в модели. Иначе вновь добавленная строка останется.
        self.close() #закрываем окно
 
if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    windowmain = window1("Первое окно")
    windowmain.show()
    sys.exit(app.exec_())

Смотрим на строку self.mapper.addMapping(self.gorod_, windowmain.model1.fieldIndex(“gorod”))

Как указать мапперу, что в поле gorod таблицы table1 нужно записать значение поля text из таблицы spisok1? Чего он мне туда индекс записывает?

Python для новичков » Задания в celery. » Фев. 10, 2013 11:19:08

Всем привет.

Подскажите, пожалуйста, как узнать сколько времени осталось до выполнения отложенного задания в celery? Задачу ставлю в очередь так:

task = delayed_function.apply_async(args=[a,b,c], countdown=600)

Django » virtualenv и sphinx » Фев. 7, 2013 20:41:59

Достался проект на джанго с поиском с помощью sphinx, база посгре, в виртуал ленв его запускаю делаю как в статье http://habrahabr.ru/post/136261/ демон запускается, а на сайте все равно ошибка при поиске и видно, что сфинкс ломится в mysql на локалхост, что как я понимаю подхватываются настроики по умолчанию

Django » Пакетная загрузка фото в админке » Янв. 31, 2013 09:42:45

Задача: нужно организовать пакетную загрузку фотографий к моделям из админки.
Нашёл хорошую статью http://openite.com/ru/python/2012/12/24/django-zagruzka-neskolkih-faylov-pri-pomoschi-html5.html
Всё работает, но никак не могу сделать. чтобы это работало в интерфейсе админки.
Есть модель картинки:
class Image(models.Model):
    created_at = models.DateField(auto_now_add=True)
    updated_at = models.DateField(auto_now=True)
    image = models.ImageField(upload_to='images/')
    content_type = models.ForeignKey(ContentType)
    object_id=models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')
admin.py
class ImagesFormSet(generic.BaseGenericInlineFormSet):
    pass
class ImagesGenericStackedInline(generic.GenericStackedInline):
    formset = ImagesFormSet
class ImagesList(generic.GenericStackedInline):
    model = Image
    outside = True
Пните в нужную сторону, куда копать, чтобы сделать в админке интерфейс пакетной загрузки к модели?

Базы данных » pymssql 2.0.0, проблема с кодировками » Янв. 30, 2013 15:31:58

Добрый день
В одном из моих проектов требуется записывать в MSSQL строки на русском языке. После смены версии библиотеки pymssql на свежую столкнулся с изменением ее поведения, с которым не смог справиться самостоятельно. Покажу на тестовом примере (такая схема работала на старой версии pymssql и вполне устраивала)
(Среда выполнения: Windows, Python 2.7, pymssql 2.0.0b, MSSQL2005, Collation - Cyrillic General CI AS):
# -*- coding: cp1251 -*-
import pymssql
con = pymssql.connect(host='127.1.1.1',user='sa',password='pass', database='reports', charset='cp1251')
cur = con.cursor()
sql = u"insert into users (FirstName,LastName,Job) values ('Вася', 'Пупкин', 'Пользователь')"
print sql, isinstance(sql, unicode) # Исходный запрос
sql = sql.encode('cp1251')
print sql, isinstance(sql, unicode) # Запрос в кодировке БД
cur.execute(sql)
con.commit()
cur.execute('SELECT * FROM users')
for row in cur:
    print row[0], row[1], row[2]
    
con.close()
В результате получаем:
insert into users (FirstName,LastName,Job) values ('Вася', ‘Пупкин’, ‘Пользователь’) True
insert into users (FirstName,LastName,Job) values ('Вася', ‘Пупкин’, ‘Пользователь’) False

49 Павел Иванов # Нормальные значения, внесенные старой версией

55 Aany Ioieei # Значения в неверной кодировке, внесенные новой версией
После некоторой медитации с доками и исходным кодом библиотеки, решил что кодировку БД достаточно указать один раз в начале, а дополнительное преобразование sql = sql.encode('cp1251') уже не нужно и является старым костылем. Но стало только хуже:
insert into users (FirstName,LastName,Job) values ('Вася', ‘Пупкин’, ‘Пользователь’) True
insert into users (FirstName,LastName,Job) values ('Вася', ‘Пупкин’, ‘Пользователь’) True

Traceback (most recent call last):
File “D:\Projects\Губкинский ГПК - НТК2 - Тренажер\tools\chek_mssql.py”, line 26, in <module>
cur.execute(sql) #, params)
File “pymssql.pyx”, line 380, in pymssql.Cursor.execute (pymssql.c:4790)
self._source._conn.execute_query(operation)
File “_mssql.pyx”, line 787, in _mssql.MSSQLConnection.execute_query (_mssql.c:8225)
cpdef execute_query(self, query_string, params=None):
File “_mssql.pyx”, line 818, in _mssql.MSSQLConnection.execute_query (_mssql.c:8107)
self.format_and_run_query(query_string, params)
File “_mssql.pyx”, line 951, in _mssql.MSSQLConnection.format_and_run_query (_mssql.c:9302)
log(query_string)
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 52-55: ordinal not in range(128)
Подскажите, что я делаю не так? Как затолкать в MSSQL простые текстовые данные?

Инструментальные средства разработки » pyinotify и PyCharm » Янв. 30, 2013 04:43:14

Когда редактирую файлы через PyCharm, то в мой скриптик на pyinotify не приходят сообщения об изменении файлов, кто нибудь сталкивался с подобным?

ЗЫ: на всякий показываю настройки, вроде все с запасом
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 800000

GUI » PySide, кастомный виджет и вызов сигнала » Янв. 29, 2013 22:53:20

Доброй ночи.
Кастомный виджет наследник от QtGui.QTextEdit.
Связь прописана
QtCore.QObject.connect(self.lineEdit, QtCore.SIGNAL(“textChanged(QString)”), MainWindow.fastInput)

Но сигнал не вызывается. Сигнал textChanged как-то явно надо прописать в наследуемом классе?

Флейм » Нужен питонщик для двух задач » Янв. 28, 2013 20:36:37

1. Дописать мою поделку. Задача сформулировать могу, кое что сам уже сделал, но знаний закончить - не хватает. Естественно за $
2. Понял что питон мне крайне интересен, прошёл 2 курса в Специалисте, но этого крайне мало, а книжки…в общем учёба по книгам мне всегда давалась тяжело, ещё со школы. По этому нужен челоек, который будет брать темку, объяснять её с примерами, давать домашнее задание, потом объяснять где и в чём не прав и как сделать лучше, ну и ответить на возникающие вопросы. веб не интересует. так же естественно за $. ваше местоположение совершенно не важно, думаю скайпа будет вполне достаточно.

обсудить подробнее и т.д. лучше в почте korp@bk.ru

Django » Посчитать количество повторяющихся лицевых счетов и вывести все в таблицу. » Янв. 28, 2013 19:49:15

Имеем модель

class NewTicket(models.Model):
    Operator = models.CharField(max_length=50,verbose_name='Оператор')
    DateW = models.DateTimeField(auto_now_add=True,blank=True,verbose_name='Дата создания')
    Lic = models.IntegerField(max_length=5,verbose_name='Лицевой счет',blank=True)
    Adress = models.CharField(max_length=50,verbose_name='Адрес')
    Telefon = models.CharField(max_length=20,verbose_name='Телефон',blank=True)
    Problem = models.CharField(max_length=200,verbose_name='Описание проблемы')
    Arhiwes = models.BooleanField(default=False)

Представление

def Showtable(request):
    Zaiavki = NewTicket.objects.filter(Arhiwes__icontains=0).order_by('-DateW') // Главная таблица
    Colish = NewTicket.objects.filter(Arhiwes__icontains=0).__len__()
    Countec = NewTicket.objects.values('Lic').annotate(count=Count('id')).filter(Arhiwes=True)//Таблица повторяющихся лицевых счетов
    return direct_to_template(request,'1maintable.html',{'Zaiavki':Zaiavki,'Colish':Colish,'Countec':Countec})

Отрендереная таблица

http://clip2net.com/s/2LwhV

В таблице есть архивные заявки и не архивные, таблица выше это не архивные заявки , в поле повтор нужно вывести количество повторений Лицевого счета из архивных заявок (Arhiwes=True) в итоге имеем два кверисета один НЕ архивная таблица Zaiavki а вторая это выборка повторений по лицевым счетам Countec

пробовал в виюшке написать вот так

{% for opera in Zaiavki %}
            <tr>
                <td>{{ opera.Operator }}</td>
                <td ALIGN="center">{{ opera.DateW|date:"j D b" }}</td>
                <td ALIGN="center">{{ opera.DateW|date:"f" }}</td>
                <td ALIGN="center">{{ opera.Lic }}</td>
                <td ALIGN="center">{{ opera.Adress }}</td>
                <td ALIGN="center">{{ opera.Telefon }}</td>
                <td ALIGN="right">{{ opera.Problem }}</td>
                {% for inside in Countec %}
                    {% if opera.Lic == inside.Lic %}
                        <td>{{ inside.count }}</td>
                    {% else %}
                        <td>0</td>
                    {% endif %}
                {% endfor %}

но получается что цикл нельзя остановить http://clip2net.com/s/2LwqX с таблицей получается вот такая беда.
Помогите как быть в этой ситуации , может соеденить два кверисета ??? подскажите

GUI » PyQt4. Создание горячих клавиш. » Янв. 27, 2013 09:24:54

В однооконном приложении требуется задать горячие клавиши, чтобы вызывались независимо от того в каком виджете находится фокус ввода. Возможно ли использовать такие комбинации: Ctrl+стрелка_вверх, Shift+стрелка_вверх, Ctrl+Home и т.д.
Python 2.7

Python для новичков » Помогите с LPT портом » Янв. 25, 2013 14:52:24

вызываю вот такую функцию:
 
def show_button2():
   p = parallel.Parallel()
а интерпретатор мне в ответ вот так:
Traceback (most recent call last):
File “/media/max/DATA/Projects/Python/PyQtParallelPort/src/PyQtParallelPort.py”, line 15, in show_button2
p = parallel.Parallel()
File “/usr/lib/python2.7/dist-packages/parallel/parallelppdev.py”, line 187, in __init__
self._fd = os.open(self.device, os.O_RDWR)
OSError: No such file or directory: ‘0x378’
Что не так?

Центр помощи » Сортировка элементов на диагоналях матрицы методом Шелла. » Янв. 23, 2013 07:19:26

Добрый день! Столкнулся с необходимостью реализации сортировки элементов матрицы (в частности, главной и побочной диагоналей). Т.к. Python недавно изучаю, голова от чтения документации пока что идет кругом.
Поэтому прошу помощи у Вас.
Буду благодарен за любую помощь, или наводку на примеры.

Есть реализация алгоритма на pascal:

var
  incr: array [0..23] of integer := (1, 4, 10, 23, 57, 145, 356, 911, 1968, 4711,
  11969, 27901, 84801, 213331, 543749, 1355339, 3501671, 8810089, 21521774,
  8548857, 157840433, 410151271, 1131376761, 2147483647);
  ch,ch2,n,q,k:integer;
  arr:array [0..1000] of integer;
  isx_ar:array [0..100,0..10] of integer;
    C: Boolean;
     G: Integer;
     I: Integer;
     J: Integer;
     Tmp: Integer;
     len: Integer;
     cur_inc: integer;
 begin
Write ('Введите размер исх. массива кол-во строк'); Readln (k);
Write ('Введите размер исх. массива кол-во столбцов'); Readln (q);
n:=0;
for ch2:=0 to k-1 do
begin
for ch:=0 to q-1 do
 begin
 isx_ar[ch2,ch]:=random(100)-random(100);
 arr[n]:=isx_ar[ch2,ch];
  write (isx_ar[ch2,ch],' ');
  inc(n);
 end;
writeln;
end;
n:=n-1;
//for i:=0 to n do Write (arr[i],' ');
 
  len := n;
  cur_inc := 0;
  while 3 * incr[cur_inc + 1] <= n do inc(cur_inc);
  repeat
    g := incr[cur_inc];
    i := g;
    repeat
      j := i - g;
      c := True;
      repeat
        if arr[j] >= arr[j + g] then
          c := False
        else
        begin
          Tmp := Arr[j];
          Arr[j] := Arr[j+g];
          Arr[j+g] := Tmp;
        end;
        dec(j, g);
      until  not ((j >= 0) and C);
      inc(i);
    until  not (i <= len);
    dec(cur_inc);
  until  not (cur_inc <> -1);
  n:=0;
  for ch2:=0 to k-1 do
begin
for ch:=0 to q-1 do
 begin
 isx_ar[ch2,ch]:=arr[n];
  write (isx_ar[ch2,ch],' ');
  inc(n);
 end;
writeln;
end;
end.

Python для новичков » действия по нажатию кнопок на клавиатуре » Янв. 22, 2013 09:25:50

Подскажите пожалуйста, нарисовал виджет в qt designer есть два поля для логина и пароля проход по ним осуществляется по ТАБ, есть кнопка окей, задача введя данные в поля нажать клавишу Enter, по нажатию клавиши Enter должна нажатся клавиша на форме. как по нажатию Enter нажимать кнопку на форме?
P.S. по умолчанию вместо Enter работает пробел.

Data Mining » pandas, Series и MultiIndex » Янв. 17, 2013 13:24:04

Допустим у нас есть такой объект класса DataFrame (на цифры не смотрите, рандомные)
print df
                  height weight
gender group  age              
male   group1 6     0.19   0.59
              7     0.26   0.49
       group2 6     0.74   0.49
              7     0.87   0.39
female group1 6     0.36   0.97
              7     0.08   0.36
       group2 6     0.17   0.20
              7     0.36   0.13
У класса DataFrame есть метод xs, чтобы получить всех 6-летних делаю так
print df.xs(6, level='age')
              height weight
gender group               
male   group1   0.12   0.41
       group2   0.49   0.88
female group1   0.00   0.54
       group2   0.62   0.99
Не могу найти подобный метод у Series. Как получить всех 6-летних из такого объекта класса Series?
gender  group   age
male    group1  6      0.37
                7      0.42
        group2  6      0.12
                7      0.85
female  group1  6      0.56
                7      0.67
        group2  6      0.55
                7      0.94

Python для новичков » Считать POST и вывести на экран » Янв. 16, 2013 13:59:37

Поднял Apache + Python

Отправляем post из файла №1
<form action="http://python.loc/test.py“ method=”post“>
<input type=”text“ name=”user“ value=”Sergey“></input>
<button>Send</button>
</form>

В файле обработчике нужно считать POST и вывести его на экран
Три часа гуглил пробовал по всякому не получается

Насколько я понял самый верный вариант выглядит как то так
<%
import cgi
form = cgi.FieldStorage()
username = form.getvalue(”user")
req.write('%s ' % username)
%>
Но не работает, возвращает None

Python для новичков » Предупреждения при тестах » Янв. 15, 2013 20:00:16

Провожу юнит тест и постоянно выходит сообщение

test_new_fanfic (__main__.Test_SPFFanfic) … /usr/lib/python3/dist-packages/lxml/html/__init__.py:532: ResourceWarning: unclosed <socket.socket object, fd=4, family=2, type=1, proto=6>
value = etree.fromstring(html, parser, **kw)
/home/kappa/PycharmProjects/Fanfics Hub 2/fanfics.py:241: ResourceWarning: unclosed <socket.socket object, fd=4, family=2, type=1, proto=6>
textElements = page.xpath(self.XPATH_TO_TEXT)

Никак не могу понять что надо закрыть и какой командой… Просмотрел несколько примеров с lxml.html, нигде подобного не видел.

Может проблема в requests? Он используется для получения страницы несколько выше по коду

pageString = requests.get(self.SPF_PATH + self.id + self.SPF_ADD_PATH + str(numPage), cookies = cookies).text

Кто может подсказать что и как закрывать? Ну или куда копать хотя бы… )

Python для экспертов » Логин в Google Drive с помошью API Keys » Янв. 14, 2013 11:36:30

В google console создал API Keys.
Написал скрипт который удаленно подключается к моему Google drive (Диск), и получает список папок. (Ну в общем скрипт много что делает, удаленно заливает файлы в мою папку, ищет нужную папку, создает папки, и т.д.) Но все это работает если подключаюсь через OAuth2WebServerFlow, однако так я делать могу только в случае разработки, так как в консоле мне выпадает первый рас ссылка по которой я перехожу и получаю код активизиции, подтверждаю его, и потом работает мой код спокойно сам.
Но на рабочем сервере, у меня нет возможности получать эту ссылку и ввести код активации, и программа просто замирает на этом шаге.

Выход - использовать API Keys. Как пишут в документации: “Всё очень просто, однако API Keys придется передавать каждый рас”. Я согласен его передавать каждый рас, но увы не выходит.

Но увы, ищу второй день и не могу найти ни единого примера работы с drive через API Keys.

Вот пример нерабочего куска кода, хотя по примерам и эксперементам я ну никакой ошибки тут не вижу.

#google key
API_key = "xxxxx"
#creating an instance of the class
drive_service = build('drive', 'v2', developerKey = API_key)
#get a list of child folder in
children = drive_service.children().list(folderId='yyyyyyy', **param).execute()

Python для новичков » EOF when reading a line » Янв. 12, 2013 09:35:44

Господа, подскажите пожалуйста, как избавиться от EOF when reading a line на TextMate? Сделал то что написано тут, тест, который там написан для руби нормально работает, но питон всё равно выдаёт ошибку

Python для экспертов » F » Янв. 12, 2013 03:40:53

Собственно код

<a href="javascript:DoLogin()" class="btn_checkout_green">
<div class="leftcap"></div><div class="rightcap"></div>
<div class="text">Войти</div>
</a>

Как активировать данную ссылку, пользуюсь либой для парсинга Grab