русский
Germany.ruForen → Архив Досок→ Programmierung

Python & MySql

753  1 2 alle
  moose старожил06.10.18 12:46
NEW 06.10.18 12:46 
in Antwort MrSanders 06.10.18 02:07

а почему вам это не нравится? читал, можно еще чрез cgi запустить, но не вижу, чем это лучше. еще читал, можно сделать что-то типа "интегрировать пайтон в пхп-скрипт", или что-то такое. ускорение происходит, т.к. интерпретатор пайтона активируется один раз при старте сервера, а не каждый раз при обращении к странице. но отладка будет геморройной: после каждой мелочи нужно перезапускать сервер.


у меня сейчас новый вопрос возник. вчера попробовал отправить из пайтона имэйл. получилось, но я должен в коде указать имя/пароль в открытом виде, что мне не нравится. понимаю, что это как поднять себя за волосы, но что можно придумать, не выкладывая пароль в открытом виде и не запрашивая его в интерактиве?

#21 
MrSanders старожил06.10.18 18:33
NEW 06.10.18 18:33 
in Antwort moose 06.10.18 12:46
а почему вам это не нравится?

Дырка в безопасности.

читал, можно еще чрез cgi запустить, но не вижу, чем это лучше.

По скорости не сильно лучше. Просто контроль за тем, что запускается будет получше.

#22 
  moose старожил07.10.18 14:53
NEW 07.10.18 14:53 
in Antwort MrSanders 06.10.18 18:33, Zuletzt geändert 07.10.18 15:04 (moose)

я не специалист в дырках в безопасности, поэтому не понимаю, кто и как может эту дырку использовать. если бы вы могли "на пальцах" объяснить. только без "если кто-то получит root" или если у меня появятся злые умыслы. имеется ввиду злое замыслил the man in the middle attack.


снова чайниковый вопрос. начитался на тему - уже "кушать не могу", но с какой стороны коней запрягать, так и не понял.


имею класс, которому переписал __str__() (так понимаю, это - аналог toString() в других языках), в надежде печатать эту строчку потом просто, "печатая объект класса"


class ClassA (object)
...
    def __str__(self):
        return self._somestring
...

пытаюсь использовать:

obj = ClassA()
s = obj.__str__()
print s # ok
print obj # exception: 'ascii' codec can't encode character u'\xfc' in position 36: ordinal not in range(128)

кто расскажет, почему присвоение того, что возвращает __str__ напрямую, позволяет себя напечатать, а "то же самое" оказывается не совсем то же самое?

#23 
  moose старожил07.10.18 15:09
NEW 07.10.18 15:09 
in Antwort moose 07.10.18 14:53, Zuletzt geändert 08.10.18 09:47 (moose)

ну вот снова: стоило людям пожаловаться, как нашел простое объяснение:


https://stackoverflow.com/questions/1307014/python-str-ver...


... но все равно ничего не понимаю : (

почему print всегда использует acsii codec? как сделать так, чтобы он использовал другой?

#24 
AlexNek патриот08.10.18 00:57
AlexNek
NEW 08.10.18 00:57 
in Antwort moose 06.10.18 12:46
но что можно придумать, не выкладывая пароль в открытом виде

Любой вид симметричного кодирования начиная от xor. Либо пользовать сервер не требующий пароля на посылку данных либо создать адрес для которого пароль не играет роли.

#25 
MrSanders старожил08.10.18 09:19
NEW 08.10.18 09:19 
in Antwort moose 07.10.18 14:53
кто и как может эту дырку использовать.

Вы, как клиент провайдера. На своём собственном апаче можно и не запрещать пхп запускать процессы. Но если вы провайдер...

1. Вы не даёте клиенту SSH доступ. Благодаря процессам их php он его "получает".

2. Даже если у вашего клиента есть доступ по SSH. По ssh он логинится как vasja, с кучей ограничений и как бы вообще не в своем заchroot-енном окружении. А вот процессы запущенные апачевским php модулем будут бегать под апачевским пользователем. Вряд ли провайдер запускает апач под каждого клиента.

#26 
  moose старожил08.10.18 09:57
NEW 08.10.18 09:57 
in Antwort MrSanders 08.10.18 09:19, Zuletzt geändert 08.10.18 10:16 (moose)

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

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


а с "принт" не можете объяснить? я так понимаю, что если класс не переписал __str__(), то print obj напечатает что-то типа object of class blablabla 0x0000000000012345. а если переписать, то будет печатать то, что эта функция выдает. и вот получаетя, что если я вызываю эту функцию напрямую (print obj.__str__() ), то print ведет себя иначе, чем если print obj. ф-я возвращает юникод, и в первом случае принт выводит то, что там закодировано, а во втором - пытается декодировать с помощью ascii codec (видимо), и выдает особый случай, если встречает байт больше 128. могу, конечно, отказаться от print obj, но хочется понять, как работает это на самом деле. желательно, не залезая в исходник от print() (а если вы не поможете, то придется)


догадываюсь, что там происходит. расскажу мою догадку.


встроенная функция print() смотрит на тип, который она получает в аргументах. если он unicode - декодирует его и печатает. если это - объект какого-то класса, то вызывает его __str__() исходя из того, что та должна (как говорит название), вернуь не юникод, а str. и декодирует соотв. кодеком ascii (пытается). дефолтная __str__() выдаст str "<class '... .ClassA'>". а если мы ее переписываем, то должны вернуть str, а не unicode. а я возвращаю unicode. но вчера целый день "читал гоголя" на эту тему, и везде очень длинно рассуждают, что такое юникод и кодирование вообще, и ничего конкретно о моем случае.


если моя догадка правильна, то не вижу решения (пока), кроме как переписать ф-ю не __str__, а __unicode__, и печатать print obj.__unicode__()

#27 
  moose старожил08.10.18 10:01
NEW 08.10.18 10:01 
in Antwort AlexNek 08.10.18 00:57

я уже сделал последнее. первое не понимаю как решит проблему (скорее усложнит), второе - такой сервер или не существует, или перестанет существовать в любой момент.

#28 
NightWatch коренной житель08.10.18 10:03
NightWatch
NEW 08.10.18 10:03 
in Antwort moose 07.10.18 15:09, Zuletzt geändert 08.10.18 10:09 (NightWatch)
почему print всегда использует acsii-encoding?

Не всегда. acsii - это только кодировка по умолчанию. https://docs.python.org/2/library/locale.html?highlight=lc...

object.__str__(self) Called by the str() built-in function and by the print statement to compute the “informal” string representation of an object. The return value must be a string object.

В python есть типы данных string и unicode. Для unicode используется object.__unicode__(self)


#29 
  moose старожил08.10.18 10:25
NEW 08.10.18 10:25 
in Antwort NightWatch 08.10.18 10:03

это все я вчера многократно прочитал. чего я не нашел, это как сделать так, чтобы print obj печатала символы, не являющиеся частью ascii. можете набросать работающий пример из нескольких строчек? класс возьмем такой:


class ClassA(object):
    def __init__(self):
        self.s = 'München'
я хочу, чтобы
...
cls = ClassA()
...
print cla
...
выдавало München.
#30 
  moose старожил08.10.18 10:49
NEW 08.10.18 10:49 
in Antwort moose 08.10.18 10:25

прочел эту статью:


http://kmike.ru/python-with-strings-attached/


, и понял, что сделать то, что я хочу "красиво" не получится, и бросаю эту затею.

#31 
NightWatch коренной житель08.10.18 10:51
NightWatch
NEW 08.10.18 10:51 
in Antwort moose 08.10.18 10:25

https://docs.python.org/2.7/reference/lexical_analysis.htm...

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

#32 
  moose старожил08.10.18 11:45
NEW 08.10.18 11:45 
in Antwort NightWatch 08.10.18 10:51

в моем случае кодировка скриптов до лампочки. "München" у меня не в скрипте, я его беру на стороне, это я для наглядности в примере его в скрипт вставил. факт тот, что print obj печатает результат, возвращаемый __str__ этого объекта, и предполагает, что там - строка ascii (и она ОБЯЗАНА возвращать именно это).

#33 
  moose старожил08.10.18 15:23
NEW 08.10.18 15:23 
in Antwort moose 08.10.18 11:45

ладно, с этим разобрались. теперь решил загрузить на сервер mysql базу. прочитал, что это просто: делаешь дамп и импортируешь файл в phpmyadmin. c mysqldump все прошло быстро и красиво, а с импортом - сплошные неприятности. сперва он начал непонимать комментарии. повыбрасывал, ругается дальше. кто-нибудь делал подобные вещи? у них нечто mariadb. mysql-образное что-то.

#34 
1 2 alle