@python_beginnersЭта группа больше не существует

Страница 552 из 1885
Igor
12.10.2016
06:47:43
т.е. helpers.py: import sqlite3 import math def cool_stuff(x, y): return cos(x) / sin(y) def save_data(data): # псевдокод, не помню как там с sqlite3 работать sqlite3.open('file.db') sqlite3.command('INSERT INTO ...') app.py: from helpers import cool_stuff, save_data if __name__ == '__main__': save_data('hello world') ```

в итоге тебе не надо там писать import math, import sqlite3 и еще кучу всего, надо написать только импорт одной функции

это облегчит тебе боль, возможно

Zart
12.10.2016
06:48:37
и как видно из примера - 1) от кучи импортов это один хрен не избавляет 2) просто появляется фирма-однодневка посредник

Google
Igor
12.10.2016
06:48:59
и как видно из примера - 1) от кучи импортов это один хрен не избавляет 2) просто появляется фирма-однодневка посредник
:D ну мне было лень большие примеры приводить, в которых это было бы правда актуально

Igor
12.10.2016
06:51:20
я идиот и мне стоит поменьше здесь пиздеть

Zart
12.10.2016
06:52:01
единственное что как-то может сэкономить список импортов - это звёздочки

Pavel
12.10.2016
06:52:24
:( сорри, и правда, хуевый пример
забавно, sin (англ) = грех (рус)

Igor
12.10.2016
06:52:28
угу, но на этом тоже можно напороться

Zart
12.10.2016
06:52:28
но их надо применять строго по предписанию врача

Pavel
12.10.2016
06:53:40
если импорты такие большие, что смущают взгляд, а используемый редактор на может их скрыть, то стоит разбить файл на три, в которых будут мелкие импорты.

Igor
12.10.2016
06:53:56
это как делать list = [1, 2, 3] а потом хуяк list2 = [4, 5, 6, 4] list(set(list2)) и иди разбирайся, что ты сделал не так

Pavel
12.10.2016
07:01:11
это как делать list = [1, 2, 3] а потом хуяк list2 = [4, 5, 6, 4] list(set(list2)) и иди разбирайся, что ты сделал не так
а не надо называть переменную list (или list2). И не потому что есть такое слово, а потому что это тупо. это список чего? если какие-то айдишники, то пусть будет ids=[1,2,3]. Если входные данные для какой-то задачи, то input_data=[1,2,3] (например). Ну и т.п.

Igor
12.10.2016
07:02:01
справедливо :) но чаще всего такое делал по глупости на своей памяти в параметрах в функции а в этом случае это как раз оправдано

Google
light
12.10.2016
07:02:45
люди

Igor
12.10.2016
07:02:48
def print_names(list): понятно же, что список имен. но можно и "names" назвать, ты прав

light
12.10.2016
07:02:50
есть задача

хелп ми плиз

дан массив, например

[3, 3, 7, 2, 2, 8]

надо привести его к виду [9, 7, 4, 8]

т.е если произведение двух соседних членов меньше 10 - то их надо перемножить и ити дальше

Zart
12.10.2016
07:03:14
file = 'foo' min = 10 max = 20 list = [1, 2] ...

Bulatbulat48
12.10.2016
07:03:49
Спасибо

Igor
12.10.2016
07:03:49
file = 'foo' min = 10 max = 20 list = [1, 2] ...
а потом еще это в функцию запихать def foo(list=[1, 2])

light
12.10.2016
07:03:49
''' for k, i in enumerate(mass): for j in mass[1:]: if i*j < 10: mass.pop(k) mass[k] = i * j '''

light
12.10.2016
07:05:06
Igor
12.10.2016
07:05:47
https://www.youtube.com/watch?v=z5WkDQVeYU4
видел доклад, да :) это все равно не отучит от привычки называть объекты a, b, и так далее

по крайней мере, не с первого раза; и только если кто-то постоянно будет следить за кодом и хуесосить его ну или если по умолчанию есть перфекционизм какой-то

Johnnie
12.10.2016
07:14:25
помогите плз по алхимии :) есть две сущности. заказчик и исполнитель. набор полей одинаковый (фамилия, имя, отчество). разные только роли у них. как правильно сделать модели? я вижу это как модель с ФИО и две модели, наследующиеся от нее, с дефолтными значениями роли. только непонятно как быть с этими ролями (точнее их названиями) при выводе например в SelectField?

Igor
12.10.2016
07:15:12
сделать абстрактную модель Person (с ФИО), от нее наследоваться заказчику иисполнителю а что с selectfield?

Google
Johnnie
12.10.2016
07:15:34
ну например я пока набросал так: class Employee(Base): first_name = Column(String(30), nullable=False) last_name = Column(String(30), nullable=False) middle_name = Column(String(30), nullable=True) role_id = Column(Integer, nullable=False) def __init__(self, first_name, last_name, middle_name): self.first_name = first_name self.last_name = last_name self.middle_name = middle_name class Customer(Employee): def __init__(self, first_name, last_name, middle_name): super().__init__(first_name, last_name, middle_name) self.role_id = 'customer' class Performer(Employee): def __init__(self, first_name, last_name, middle_name): super().__init__(first_name, last_name, middle_name) self.role_id = 'performer'

Zart
12.10.2016
07:15:48
что мешает человеку быть и заказчиком и исполнителем...

Johnnie
12.10.2016
07:16:02
но чую это неправильно, потому что красивое "Заказчик" мне пока не вывести

Zart
12.10.2016
07:16:05
person_id

Johnnie
12.10.2016
07:16:10
Igor
12.10.2016
07:17:28
все равно не понял, в чем проблема к тому же, в твоем примере проще иметь одну модель Employee

все равно role_id и там и там есть

если role_id - это int, то у тебя должен быть какой-то enum-подобный объект, который будет связывать role_id 1 с customer'ом, а 2 - с performer'ом (например) тогда при отображении в selectfield можно будет делать что-то вроде такого: from enum import Enum class Role(Enum): customer = 1 performer = 2 class Person(object): first_name = 'Vasily' last_name = 'Pupkin' role_id = 1 my_customer = Person() print(my_customer.first_name, 'is a', Role(my_customer.role_id).name) Vasily is a customer

Johnnie
12.10.2016
07:30:29
а если на русском нужно? отдельную таблицу делать с role_id и role_name?

Igor
12.10.2016
07:30:49
ну enum это лишь пример. можно dict

отдельная таблица нахуй не нужна, если у тебя не бдут постоянно редактироваться типы юзеров

roles = {1: 'заказчик', 2: 'исполнитель'} и потом roles[person.role_id]

Igor
12.10.2016
07:32:43
хоть так, например

Johnnie
12.10.2016
07:39:35
хм, щас так попробую, спасибо :)

Igor
12.10.2016
07:40:01
если нужны все заказччики, то session.query(Person).filter_by(role_id=1)

Johnnie
12.10.2016
07:40:54
ну это я буду пихать в форме как источник данных для selectfield, да?

Igor
12.10.2016
07:41:43
если форма поддерживает реузльтат запроса алхимии, то да если не поддерживает - то надо будет как-то в list сконвертнуть, скорее всего тут я не уверен, если честно

у wtforms есть QuerySelectField

погоди, я запутался ты что хочешь в selectfield отображать?

тип роли для какого-то определенного человека? (либо заказчик, либо исполнитель)

Google
Johnnie
12.10.2016
07:44:43
"Заказчик" и "Исполнитель"

ну и в просмотре отдельного сотрудника это выводить

Zart
12.10.2016
07:46:01
таблица людей и поле с типом

Igor
12.10.2016
07:46:15
тогда QuerySelectField не нужен, пардон. можно будет указать в форме role = SelectField('тип сотрудника', choices=roles.items()) где roles - это dict что выше

по идее все само должно будет подцепляться и выбираться

Zart
12.10.2016
07:47:38
олсо легким движением руки и апдейта превращается в пидораса

Zart
12.10.2016
07:48:59
тип = заказчик/исполнитель/пидорас

тебе UPDATE TABLE написать?

Admin
ERROR: S client not available

Igor
12.10.2016
07:49:36
Johnnie
12.10.2016
07:49:56
пидорасов не планируется :)

Igor
12.10.2016
07:50:09
пидорасов не планируется :)
все так думают поначалу

Johnnie
12.10.2016
08:23:23
а вывод названия как правильно? сейчас у меня в модели только айдишник роли

соот-но при выводе там 1 2

не в шаблоне же ифом шпарить :)

class Employee(Base): first_name = Column(String(30), nullable=False) last_name = Column(String(30), nullable=False) middle_name = Column(String(30), nullable=True) role_id = Column(Integer, nullable=False) role = Column(String(30), nullable=False) def __init__(self, first_name, last_name, middle_name, role_id): self.first_name = first_name self.last_name = last_name self.middle_name = middle_name self.role_id = role_id self.role = roles[role_id]

как вариант

но смысла хранить это в БД не вижу

Google
Igor
12.10.2016
08:28:31
сделай property

в классе с моделью

@property def role(self): return roles[self.role_id]

должно работать

дикт я бы обозвал, кстати, ROLES чтобы путаницы меньше было, т.к. он константный

Johnnie
12.10.2016
08:29:54
получилось, спасибо)

да, надо поменять

уникальность вот как проверять только

фамилия+имя+отчество?

или от этого взять md5?

в lowercase

Igor
12.10.2016
08:31:47
уверен, что это все необходимые поля? наверняка пригодилось бы какое-нибудь уникальное типа логина или емейла

и вот по нему уже проверять уникальность

Johnnie
12.10.2016
08:31:55
role = SelectField('Role', choices=[(str(key), value) for key, value in ROLES.items()])

вот так сделал

уверен, что это все необходимые поля? наверняка пригодилось бы какое-нибудь уникальное типа логина или емейла
у них нет логина или емейла, то есть это не те пользователи, которые логинятся сюда :)

но я хочу для них справочник, чтобы указывать их в других сущностях

Igor
12.10.2016
08:33:07
ну так items это и есть набор туплов. ну хотя да, в третьем питоне будет генератор возможно можно list(ROLES.items()) обойтись

Johnnie
12.10.2016
08:33:48
http://wtforms.simplecodes.com/docs/0.6.1/fields.html#wtforms.fields.SelectField

как здесь делал

Igor
12.10.2016
08:34:31
ну ок, не спорю :) тем более раз в доке описано

Страница 552 из 1885

Эта группа больше не существует Эта группа больше не существует