Найти - Пользователи
Полная версия: a='Иванов' print 'Фамилия %(a)s' Почему не работает?
Начало » Python для экспертов » a='Иванов' print 'Фамилия %(a)s' Почему не работает?
1 2 3
nss
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.
Teddy Bear
Хе-хе, 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’.
FoxPython
Teddy Bear
О! Что-то интересное. Попробуем-попробуем.
Teddy Bear
Хе-хе, FoxPython, несмотря на укоризну софорумников, я считаю, твои стремления вполне оправданными. ))
Мои стремления удостоились рейтинга в -1. Все дружно решили, что я диверсант, вредитель, шпиён и агент мирового империализма :)
bialix
FoxPython
Teddy Bear
Мои стремления удостоились рейтинга в -1. Все дружно решили, что я диверсант, вредитель, шпиён и агент мирового империализма :)
Есть немного. :-)
Начните читать и осознавать Zen of Python (import this в интерпретаторе, или по-русски здесь: http://onembedding.bialix.com/tools/python/articles/zen/).
FoxPython
bialix
Спасибо за ссылочку. Я с “заповедями” согласен.
Но написание %s, %s, %s, %s, %s, %s, % one, two, three, four, five, six
хуже чем просто %one, %two, %three, %four, %five, %six

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

Это моё личное мнение. Естественно имеете полное право с ним не соглашаться. Точно так же как и я с Вашим. Разве не логично?
И никого я не пытался обидеть или посмеяться над чьим-то мнением.
bialix
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.
FoxPython
bialix
Вам же подсказали, что это делается
Да, вполне благодарен за помощь. Я лишь объяснял свои первоначальные типа “претензии”.
ffzema
Я думаю прежде чем пытаться программировать надо знать азы языка.
Извините конечно, но если просить все написать других, то зачем тогда самому программировать, пускай это делают другие, те кто хочет, умеет, или хочет и пытается сам, может и не умея, но что то делает сам, а не пытается узнать у других при первой же запинке :).
FoxPython
ffzema
Я АБСОЛЮТНО самостоятельно изучил FoxPro по встроенной справке. Но на это угрохалось немало времени. Не хочется изобретать велосипеды, если кто-нибудь может быстрее помочь, используя свои знания и опыт. При этом никого естественно этого делать не заставляю. Нет желания помочь, ну, нет так нет.

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

В том же учебнике в котором я вычитал про %(a)s как-то не очень явно было указано, что для такой конструкции требуется именно словарь. Вот я и застрял. А писать свою программку дальше хочется. А вместо этого приходится шарить, шарить, шарить и ещё раз шарить по учебникам, а у меня глаза уже жуть до чего красные, “песком” засыпанные. Никакие капли не помогают, готов уже идти учиться на Computer Destroyer. Есть такая профессия? А то я готов!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB