Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 18, 2007 13:43:40

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

Как в select запросе для sqlite базы указать поле неявным способом?

Т.е. через питоновскую переменную.
c.execute('SELECT питон_переменная_содержащая_имя_поля, other_field, other_field FROM my_table')
Нужно не явно указать имя поля для выборки, а подсунуть питон-переменную в которой хранится имя этого поля.
А ещё лучше подсунуть список, хранящий все имена полей для выборки. Это ещё лучше.

Как это сделать? Никак что-то не могу сообразить.

——————————————————————-
Дабы не создавать кучу новых тем, спрошу ещё кое о чём:

Объясните мне кто-нибудь в конце-концов КАК создать ГЛОБАЛЬНУЮ переменную, видимую во всех классах, методах, процедурах, функциях, в основном теле программы, короче ВЕЗДЕ. Чтобы её преспокойно можно было изменять из любого места.
Знаю, что есть такая штука как global, но не врубаюсь, как она работает. Вроде напишу, что переменная у меня глобальная, присвою ей значение, вроде в другом классе она видится, даже изменяется. Но вот попробовал её “обнулить” в этом самом другом классе (не в том, где она была первоначально создана), т.е. к примеру, сделать заполненный список пустым (my_spisok=)- ошибки тут же лезут всякие.
———
wx.grid.Grid некорректно отображает значения ячеек! Если значение какой-нибудь ячейки не вмещается в этой ячейке, то оно наползает на соседнюю, вместо того, чтобы отображать только то, что влазит в границы ячейки. Позор создателям wx.widgets?



Офлайн

#2 Ноя. 18, 2007 18:03:26

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Как в select запросе для sqlite базы указать поле неявным способом?

FoxPython
Как это сделать? Никак что-то не могу сообразить.
А в документацию к питону(!) не заглядывал?
"foobar " + my_var + " barfoo"
или через форматирование
"foobar %s barfoo" % my_var
В доке всё описано, и про списки тоже.
FoxPython
Объясните мне кто-нибудь в конце-концов КАК создать ГЛОБАЛЬНУЮ переменную, видимую во всех классах, методах, процедурах, функциях, в основном теле программы, короче ВЕЗДЕ. Чтобы её преспокойно можно было изменять из любого места.
Знаю, что есть такая штука как global, но не врубаюсь, как она работает. Вроде напишу, что переменная у меня глобальная, присвою ей значение, вроде в другом классе она видится, даже изменяется. Но вот попробовал её “обнулить” в этом самом другом классе (не в том, где она была первоначально создана), т.е. к примеру, сделать заполненный список пустым (my_spisok=)- ошибки тут же лезут всякие.
уже надоело в доку отправлять;) global добавляет переменную в локальную область видимости.
foobar = 777
def func():
   global foobar
   
   foobar = 666 #изменяется глобальная переменная



Офлайн

#3 Ноя. 18, 2007 19:53:46

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

Как в select запросе для sqlite базы указать поле неявным способом?

Daevaorn
Заглядывал, не нашёл. И ваш приведённый пример не понял.
Я пытался сделать так:
nomer=100
c.execute('SELECT (?), fam, im, ot FROM mytable', nomer)
не сработало.
У меня sqlite3, с ней используется знак ? а не %s

———————-
т.е. переменную в начале текста программы (не связанную ни с какими классами) нужно просто записать и присвоить ей значение, а потом В КАЖДОМ методе, функции, процедуре приписывать ей для начала global, а потом уж присваивать новое значение? КАРАУЛ!!!! Я к такому не привык. По-моему гораздо проще сначала один раз указать, что переменная глобальная, а не в каждом методе-процедуре об этом указывать.



Офлайн

#4 Ноя. 18, 2007 20:47:31

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Как в select запросе для sqlite базы указать поле неявным способом?

FoxPython
Daevaorn
Заглядывал, не нашёл. И ваш приведённый пример не понял.
Я пытался сделать так:
nomer=100
c.execute('SELECT (?), fam, im, ot FROM mytable', nomer)
не сработало.
У меня sqlite3, с ней используется знак ? а не %s
Не путай мелкое с мягким. Вопрос используется для экранирования значений. (т.е. в where condition для select/delete/update и values для insert). Тебе же предлагается:


query = “SELECT %s, name, bday FROM people WHERE id=?”

additional_field = ‘id’

target_id = 23

curs.execute(query % additional_field, target_id)


P.S. Разделите уж ветку, а то вопрос-числитель и ответ-знаменатель напрягают.



Отредактировано (Ноя. 18, 2007 20:48:36)

Офлайн

#5 Ноя. 18, 2007 20:55:46

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Как в select запросе для sqlite базы указать поле неявным способом?

FoxPython
Заглядывал, не нашёл. И ваш приведённый пример не понял.
попробуй ещё раз заглянуть. она не кусается.
FoxPython
КАРАУЛ!!!! Я к такому не привык.
Прально. Привыкай к новому стилю. Глобальные переменные вообще зло, а уж те которые изменяются неизвестно где, так вообще в кошмарах приходят. Питон это тебе не Delphi какой-нибудь…



Офлайн

#6 Дек. 8, 2007 18:51:21

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

Как в select запросе для sqlite базы указать поле неявным способом?

Daevaorn
Питон это тебе не Delphi
Что-то на хи-хи пробило…
Мне по-барабану дельфи, мне надо чтобы было удобно. Мой любимый язык - ФОКСПРО! В котором если уж я сделал переменную глобальной, то она и становится ГЛОБАЛЬНОЙ. Ни одна функция или процедура не имеет права более использовать переменные с таким же именем.

Правда, я тут подразобрался со зверем self'ом и кол-во глобальных переменных в моих GUI программах резко сократилось…



Офлайн

#7 Дек. 8, 2007 19:13:26

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Как в select запросе для sqlite базы указать поле неявным способом?

FoxPython
Мне по-барабану дельфи, мне надо чтобы было удобно.
То что удобно тебе, не значит что удобно всем. Не нравится не кушай.
FoxPython
Мой любимый язык - ФОКСПРО!
Сочувствую.
FoxPython
В котором если уж я сделал переменную глобальной, то она и становится ГЛОБАЛЬНОЙ.
Сочувствую.
FoxPython
Ни одна функция или процедура не имеет права более использовать переменные с таким же именем.
Не поверишь, тоже сочувствую. Искренне. Игрушки прибитые к полу…

На вкус и цвет…



Офлайн

#8 Дек. 8, 2007 21:09:00

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Как в select запросе для sqlite базы указать поле неявным способом?

FoxPython
Daevaorn
Питон это тебе не Delphi
Что-то на хи-хи пробило…
А нас как…
Мой любимый язык - ФОКСПРО!
Пиши на том, что нравится.



Отредактировано (Дек. 8, 2007 21:09:28)

Офлайн

#9 Дек. 15, 2007 19:24:53

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

Как в select запросе для sqlite базы указать поле неявным способом?

Все весело посмеялись! Смех - это хорошо! :)

j2a
Пиши на том, что нравится.
Спасибо! Мне прикольно программировать на питоне. Буду продолжать! :)

j2a
А нас как…
А что именно расмешило? Большие буковки? Ну, удобно мне программировать на фокспро, вот я ему такую честь и оказал. Потому как пишу программки в основном для работы с файлами-базами данных. А фокспро для этого и создан.

Люди, не берите в голову. Я не нападаю на ваш любимый питон. Я сам учусь на нём программировать! Пока изучал фокспро, я на него тоже, типа, “нападал” :)



Офлайн

#10 Дек. 15, 2007 19:33:12

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

Как в select запросе для sqlite базы указать поле неявным способом?

FoxPython
Ни одна функция или процедура не имеет права более использовать переменные с таким же именем.
О! Вы, наверное, все дружно решили, что глобальная переменную, вообще, нельзя использовать в функциях и процедурах?
Да, можно конечно! Только она и будет изменяться как глобальная. Имел ввиду, что не может быть ЛОКАЛЬНОЙ переменной с таким же именем, что и глобальная. Лично меня это устраивает вполне. Я и имя ей присвою, что-то типа: gl_var, чтоб сразу видно было, что она глобальная.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version