Ответы пользователя по тегу Python
  • Почему при наличии пробелов в строке PostgreSQL выдаёт ошибку (Psycopg2, Python)?

    nochkin
    @nochkin
    Ошибка потому что это некоректный запрос на SQL. Все строки должны быть в кавычках если там пробелы.
    Но вообще все параметры надо передавать parameterized во избежании уязвимостей типа sql injection. То есть, вместо пераметров будут знаки "?", а сами значения будут передавать вторым параметров в вызове execute.
    Что-то типа такого:
    cursor.execute("insert into data(name, type) values (?,?)", (profile_name, "N/A"))
    Ответ написан
    Комментировать
  • Почему при чтении JSON выдаёт ошибку?

    nochkin
    @nochkin
    Как написали уже выше, лучше исправить источник.
    Но если нет такой возможности, то альтернативно можно использовать ast.literal_eval:
    import ast
    
    with open(f'example.json', mode='r', encoding='utf-8') as srcfl:
        data_s = srcfl.read()
    
    data = ast.literal_eval(data_s)
    print(data)
    Ответ написан
    Комментировать
  • Как вызвать python функцию с аргументами из php скрипта?

    nochkin
    @nochkin
    На стороне питон-скрипта должен быть код, которые читает эти аргументы. Обычно это делается через sys.argv или argparse.

    Кстати, для PHP есть ещё system, который может быть удобнее и понятнее в данном случае.
    Ответ написан
  • Как правильно добавить if в скрипт?

    nochkin
    @nochkin
    Для начала надо "vlan" перевести в int, что бы можно было сравнить с 4096. А потом уже делать сравнение.
    Что-то типа такого:

    try:
      vlan = int(vlan)
    except ValueError:
      print("vlan must be int")
      return


    После этого можно проверять:
    if vlan > 4096:
      print("vlan can not exceed 4096")
      return


    P.S.: если есть проверка верхнего уровня, то, пожалуй, есть смысл проверить нижний так же. Если так, то проверка будет примерно такая (проверяет что бы vlan не был меньше 1 и больше 4096):
    if not vlan in range(1, 4096):
      print("vlan must be between 1 and 4096")
      return
    Ответ написан
    4 комментария
  • Python: как осуществить импорт модуля на уровень выше?

    nochkin
    @nochkin
    from modules import settings
    Ответ написан
    Комментировать
  • Как обновить библиотеку ZLIB для Python?

    nochkin
    @nochkin
    zlib это часть самого Python. Надо обновить Python:
    www.python.org/download/releases/2.7.6/
    www.python.org/download/releases/3.3.3/

    По поводу альтернативы:
    Смотря какая цель и реализация. Может, gzip подойдёт?
    Ответ написан
    1 комментарий
  • Веб-сервер своими руками

    nochkin
    @nochkin
    Не думаю что есть толковые маны на эту тему с практической стороны, а теоретической стороны может быть недостаточно.
    Возможно, идея с исходниками не такая уже и плохая.

    Только Selenium это не сервер, а клиент. Он ведь автоматизирует браузер с клиентской стороны.
    Ответ написан
    2 комментария
  • Python как язык для собеседования в Google?

    nochkin
    @nochkin
    Задачи бывает разные. Есть задачи, которые на любом современном языке можно выразить в правильное решение. А есть задачи, которые более специфичны в этом плане. Просто «выучить» язык будет недостаточно что бы решать такие, тут нужен достаточный опыт и понимание почему эту задачу надо решить именно на этом языке.
    Ответ написан
    Комментировать
  • Тестирование сетевых приложений на Python

    nochkin
    @nochkin
    Мне кажется что мало информации и слишком уж расплывчато, поэтому и ответы такие:

    1. Можно сделать запросы низкого уровня отдельно от работы выского уровня и просто подменять модуль низкого уровня или конфигурировать его, а верхний уровень с unit-тестами меняться не будет.

    2. Можно кешировать как посоветовали выше. Если что-то просто, то я просто подменял и читал локальные файлы, которые предварительно утянул с сайта на определённые свои запросы.

    3. Я не очень понял зачем виртуальные машины. Если писать питоновские скрипты и каждый будет выполняться независимо, то машины не нужны. У каждого будут свои куки, окружение, свой конфиги и прочее. Просто запустить параллельно.
    Ответ написан
  • Python mysql wrong architecture mac os 10.8.3?

    nochkin
    @nochkin
    Я бы убрал "-arch i386".
    А как либа от MySQL собрана была? Что скажет на «otool -fv <libmysqlclient*.dylib>»? Клиент от mysql запускать можно вообще?
    И почему в путях в site-packages написано «macosx-10.5»? Это какой-то старый путь попадается? Может, почистить и переустановить просто надо?
    Ответ написан
    2 комментария
  • Виртуальное окружение и py2exe?

    nochkin
    @nochkin
    1. Можно установить все нужные пакеты в Python, который находится из реестра.
    2. Можно скопировать модули как локальные для проекта (вместе со своим кодом), что бы py2exe их локально находил.
    3. У py2exe есть опция includes, через которую можно указывать дополнительные модули. Предполагаю, что через sys.path у py2exe можно добавить путь для поиска.
    Ответ написан
    2 комментария
  • Python. Авторизация OAuth

    nochkin
    @nochkin
    Это работает немного иначе:
    1. Скрипт получает url (куда идет 302).
    2. Скрипт отдает этот url пользователю, который авторизируется сам своим логином и паролем (которые скрипт не получает)
    3. Потом скрипт получает некий токен от сервиса, с помощью которого этот скрипт может заходить на те ресурсы аккаунта, которые разрешил пользователь при авторизации в #2.

    Профит в том, что пользователь не отдает свой пароль. И так же пользователь может в любой момент де-авторизировать этот токен если он больше не хочет что бы скрипт имел этот доступ.

    Если нужно авторизироваться именно с логином и паролем самим скриптом, то это уже не OAuth надо делать, а парсить формы напрямую. Это тот еще гиморой и бубны. Особенная «радость» наступает когда сервис начинает делать мелкие изменения в html коде время от времени.
    Ответ написан
  • Как программно вбить логин и пароль?

    nochkin
    @nochkin
    Логин и пароль передаются формой либо через POST (чаще всего), либо через GET.
    Достаточно посмотреть какие поля передаются при логине и передать такие же в скрипте.

    Конкретно с cefpython как это сделать я не скажу, но, например, попробовать через navigateURL.
    Хотя, если посмотреть документацию на cefpython, то было было классно использовать SendKeyEvent, SendMouseClickEvent и типа того, но модуль еще достаточно сырой и такие фишки там пока не сделаны.
    Ответ написан