Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 12, 2007 19:35:16

nss
От:
Зарегистрирован: 2007-01-06
Сообщения: 103
Репутация: +  0  -
Профиль   Отправить e-mail  

a='Иванов' print 'Фамилия %(a)s' Почему не работает?

FoxPython
nss
Чем тебя не устраивает вариант:
dict={}
dict['fam']='fam'
dict['im']='im'
dict['ot']='ot'
dict['table']='table'
dict['find_fam']='fam'
query='SELECT %(fam)s, %(im)s, %(ot)s FROM %(table)s WHERE %(fam)s=%(find_fam)s' % dict
Просто есть в питоне такая идиома, что “Explicit is better than implicit”. Все языковые конструкции продуманы с ее учетом.
Многа бук… знаков препинания (а мне питон приглянулся, в отличие от PHP всяких, за отсутствие лишних скобок, точек-запятучек и т.д.), но всё же такой вариант уже лучше. Будем использовать. Спасибо.
Посмотри на библиотеки типа SQLAlchemy или SQLObject. Вручную писать SQL задолбешься в любом языке. Да и в плане безопасности это очень скользко. Малейший недосмотр – и получаешь возможность sql-injection.



Офлайн

#2 Дек. 13, 2007 21:30:44

Teddy Bear
От:
Зарегистрирован: 2007-03-02
Сообщения: 53
Репутация: +  0  -
Профиль   Отправить e-mail  

a='Иванов' print 'Фамилия %(a)s' Почему не работает?

Хе-хе, FoxPython, несмотря на укоризну софорумников, я считаю, твои стремления вполне оправданными. ))
Как тебе такой вариант:
from string import Template
MyQueryTemplate = Template('SELECT $fam, $im, $ot FROM $table WHERE $fam = $find_fam')
Query = MyQueryTemplate.substitute(fam='fam', im='im', ot='ot', table='anketa', find_fam='Petrov')
ps: и не забывай один нюанс - метод substitute на входе принимает только словари.
тонкости использования смотри в документации, топик ‘Template strings’.



Отредактировано (Дек. 13, 2007 21:53:41)

Офлайн

#3 Дек. 15, 2007 19:48:47

FoxPython
От:
Зарегистрирован: 2007-09-15
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

a='Иванов' print 'Фамилия %(a)s' Почему не работает?

Teddy Bear
О! Что-то интересное. Попробуем-попробуем.

Teddy Bear
Хе-хе, FoxPython, несмотря на укоризну софорумников, я считаю, твои стремления вполне оправданными. ))
Мои стремления удостоились рейтинга в -1. Все дружно решили, что я диверсант, вредитель, шпиён и агент мирового империализма :)



Офлайн

#4 Дек. 16, 2007 20:52:21

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

a='Иванов' print 'Фамилия %(a)s' Почему не работает?

FoxPython
Teddy Bear
Мои стремления удостоились рейтинга в -1. Все дружно решили, что я диверсант, вредитель, шпиён и агент мирового империализма :)
Есть немного. :-)
Начните читать и осознавать Zen of Python (import this в интерпретаторе, или по-русски здесь: http://onembedding.bialix.com/tools/python/articles/zen/).



Офлайн

#5 Дек. 17, 2007 05:48:47

FoxPython
От:
Зарегистрирован: 2007-09-15
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

a='Иванов' print 'Фамилия %(a)s' Почему не работает?

bialix
Спасибо за ссылочку. Я с “заповедями” согласен.
Но написание %s, %s, %s, %s, %s, %s, % one, two, three, four, five, six
хуже чем просто %one, %two, %three, %four, %five, %six

во втором случае сразу видно какая переменная к чему относится, в первом случае это уже не так уж очевидно. Приходится сопоставлять номер позиции %s и переменных

Это моё личное мнение. Естественно имеете полное право с ним не соглашаться. Точно так же как и я с Вашим. Разве не логично?
И никого я не пытался обидеть или посмеяться над чьим-то мнением.



Офлайн

#6 Дек. 17, 2007 10:59:32

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

a='Иванов' print 'Фамилия %(a)s' Почему не работает?

FoxPython
bialix
Спасибо за ссылочку. Я с “заповедями” согласен.
Но написание %s, %s, %s, %s, %s, %s, % one, two, three, four, five, six
хуже чем просто %one, %two, %three, %four, %five, %six

во втором случае сразу видно какая переменная к чему относится, в первом случае это уже не так уж очевидно. Приходится сопоставлять номер позиции %s и переменных
Вам же подсказали, что это делается либо через словарь: “%(one)s %(two)s” % vars, либо через синтаксис $one $two, правда только начиная с питона 2.4.



Офлайн

#7 Дек. 17, 2007 11:06:01

FoxPython
От:
Зарегистрирован: 2007-09-15
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

a='Иванов' print 'Фамилия %(a)s' Почему не работает?

bialix
Вам же подсказали, что это делается
Да, вполне благодарен за помощь. Я лишь объяснял свои первоначальные типа “претензии”.



Офлайн

#8 Дек. 26, 2007 13:13:49

ffzema
От:
Зарегистрирован: 2007-08-18
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

a='Иванов' print 'Фамилия %(a)s' Почему не работает?

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



Офлайн

#9 Дек. 26, 2007 13:35:54

FoxPython
От:
Зарегистрирован: 2007-09-15
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

a='Иванов' print 'Фамилия %(a)s' Почему не работает?

ffzema
Я АБСОЛЮТНО самостоятельно изучил FoxPro по встроенной справке. Но на это угрохалось немало времени. Не хочется изобретать велосипеды, если кто-нибудь может быстрее помочь, используя свои знания и опыт. При этом никого естественно этого делать не заставляю. Нет желания помочь, ну, нет так нет.

Учебник пишет обычно один человек и он не может предусмотреть все те заминки, которые могут случиться у новичка при изучении данного учебника, не может выложить советы сразу по любому возникающему у читателя по ходу чтения вопросу. У меня и так нет знакомых программистов, а уж по питону тем более. Спросить не у кого. Вот и лезу с надеждой на форум.

В том же учебнике в котором я вычитал про %(a)s как-то не очень явно было указано, что для такой конструкции требуется именно словарь. Вот я и застрял. А писать свою программку дальше хочется. А вместо этого приходится шарить, шарить, шарить и ещё раз шарить по учебникам, а у меня глаза уже жуть до чего красные, “песком” засыпанные. Никакие капли не помогают, готов уже идти учиться на Computer Destroyer. Есть такая профессия? А то я готов!



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version