[Python] вопрос/ответ.

Discussion in 'Python' started by De-visible, 21 Jan 2009.

  1. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    не подскажите гдевзять модули для мобильного python(симба)?
    Или не где прочитать про их написание?(они ведь пишутся с+)мог бы кто нибудь дать простой пример с подробными комментами?
     
  2. !Knyaz2010!

    !Knyaz2010! Member

    Joined:
    24 Jun 2010
    Messages:
    57
    Likes Received:
    5
    Reputations:
    5
    Доброе время суток. Помогите плиз разобраться с кодировкой на питоне. Вопрос следующий - есть французское название которое я предлагаю функции - Collège. Нужно чтобы в таком же виде это названии шло в мою процедуру. Сейчас же оно идет в таком виде Coll\xe8ge. Вот пример кода:

    # -*- coding: utf-8 -*-

    import pymssql,
    from django.http import HttpResponse
    import settings

    @render_to('blog/test.html')

    def blog(request):

    conn = pymssql.connect(host=settings.MSSQL_DB_HOST, user=settings.MSSQL_DB_LOGIN, password=settings.MSSQL_DB_PASSWORD, database=settings.MSSQL_DB_DATABASE, as_dict=True)
    cur = conn.cursor()
    term = "Collège"
    sql = "get_imported_company_name '"+str(term)+"',1"
    lists = cur.fetchall()
    conn.close()
    return HttpResponse(term)


    Возвращает на страницу оно правильно, а вот запрос идёт у виде:
    exec get_imported_company_name 'Coll\xe8ge',1
    нужно:
    exec get_imported_company_name 'Collège',1

    Может у кого то была подобная проблема?
     
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    !Knyaz2010! где проблема-то? Что такое, по вашему, кодировка символов?
     
    _________________________
  4. !Knyaz2010!

    !Knyaz2010! Member

    Joined:
    24 Jun 2010
    Messages:
    57
    Likes Received:
    5
    Reputations:
    5
    Проблема в том, что в процедуру попадает вот такое представление данных exec get_imported_company_name 'Coll\xe8ge',1. В процедурe я инсертю первый параметр в таблицу и она туда попадает в таком виде Coll\xe8ge, то есть не декодировано
     
    #924 !Knyaz2010!, 22 Mar 2012
    Last edited: 22 Mar 2012
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    !Knyaz2010! вы ошибаетесь. Данные в присвоении term = "Collège" - правильные. Далее вы их в какой то момент самолично портите, используя функции str(), например. Или же в момент вывода на экран запроса происходит преобразование в представление.

    Если вы SQL запрос составляете с помощью функций str() и плюсов - у меня для вас плохая новость, вы кодите на каком-то другом языке, а не на питоне. PyMSSQL поддерживает спецификацию DB-API 2.0, рекомендую ознакомиться что это такое и начать использовать параметризованные вызовы. Например вместо
    Сделать так:
     
    _________________________
  6. !Knyaz2010!

    !Knyaz2010! Member

    Joined:
    24 Jun 2010
    Messages:
    57
    Likes Received:
    5
    Reputations:
    5

    Извините, по быстрому набрал код. Я использую вот такую строку

    sql_test = """exec get_imported_company_name '{0}',1""".format(term)

    но она также не подходит. А когда использую ваш вариант - cur.callproc('get_imported_company_name', (term, 1)) - также выводит ошибку:

    UnicodeEncodeError at /blog/
    ('ascii', u'Coll\xe8ge', 4, 5, 'ordinal not in range(128)')


    И ещё хотел добавить - если эту переменную term просто вывести в темплейт то выводит правильно. Использую версию пайтона 2.6, может в этом причина?
     
    #926 !Knyaz2010!, 22 Mar 2012
    Last edited: 22 Mar 2012
  7. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    !Knyaz2010! Попробуйте в pymssql.connect явно указать кодировку charset='UTF-8'. В какой кодировке находится база? В какой кодировке приходят данные в скрипт? В какой момент возникает ошибка

    И вот у меня возник вопрос, а вы, все-таки, не делаете ли из мухи слона? Чем вам мешает тот факт, что внутри скрипта вывод в таком виде?
     
    _________________________
  8. !Knyaz2010!

    !Knyaz2010! Member

    Joined:
    24 Jun 2010
    Messages:
    57
    Likes Received:
    5
    Reputations:
    5
    Отвечу по порядку:
    1) в pymssql.connect явно указать кодировку charset='UTF-8' - делал, не помогло. По дефолту стоит эта кодировка.
    2) База в UTF-8
    3) в скрипт данные также приходят в UTF-8, но пайтон её как то декодирует по своему
    4) ошибка возникает когда идет запрос к базе. Выскакивает эта ошибка, о которой я писал на пост раньше. Проблема в том что в процедуре находится саммый обичный селект типа "SELECT column_name FROM table WHERE colunm_name2 LIKE '%word%'".
    При этом база не сможет выдать (и не выдает) ничего когда word=Coll\xe8ge, так как в запрос непосредсвенно идет почему то эта строка, не декодирована и никакая, и в базе она тажке не преврячаеться в нормальный вид
     
  9. boortyhuhtyu

    boortyhuhtyu Member

    Joined:
    2 Feb 2011
    Messages:
    727
    Likes Received:
    26
    Reputations:
    -6
    Code:
    import socket
    
    class DNSQuery:
      def __init__(self, data):
        self.data=data
        self.dominio=''
    
        tipo = (ord(data[2]) >> 3) & 15   # Opcode bits
        if tipo == 0:                     # Standard query
          ini=12
          lon=ord(data[ini])
          while lon != 0:
            self.dominio+=data[ini+1:ini+lon+1]+'.'
            ini+=lon+1
            lon=ord(data[ini])
    
      def respuesta(self, ip):
        packet=''
        if self.dominio:
          packet+=self.data[:2] + "\x81\x80"
          packet+=self.data[4:6] + self.data[4:6] + '\x00\x00\x00\x00'   # Questions and Answers Counts
          packet+=self.data[12:]                                         # Original Domain Name Question
          packet+='\xc0\x0c'                                             # Pointer to domain name
          packet+='\x00\x01\x00\x01\x00\x00\x00\x3c\x00\x04'             # Response type, ttl and resource data length -> 4 bytes
          packet+=str.join('',map(lambda x: chr(int(x)), ip.split('.'))) # 4bytes of IP
        return packet
    
    if __name__ == '__main__':
      ip='192.168.1.1'
      print 'pyminifakeDNS:: dom.query. 60 IN A %s' % ip
      
      udps = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
      udps.bind(('',53))
      
      try:
        while 1:
          data, addr = udps.recvfrom(1024)
          p=DNSQuery(data)
          udps.sendto(p.respuesta(ip), addr)
          print 'Respuesta: %s -> %s' % (p.dominio, ip)
      except KeyboardInterrupt:
        print 'Finalizando'
        udps.close()
    ошибка: File "recipe-491264-1.py", line 30
    print 'pyminifakeDNS:: dom.query. 60 IN A %s' % ip
    ^
    SyntaxError: invalid syntax
     
  10. boortyhuhtyu

    boortyhuhtyu Member

    Joined:
    2 Feb 2011
    Messages:
    727
    Likes Received:
    26
    Reputations:
    -6
    Traceback (most recent call last):
    File "lolzik.py", line 16, in ?
    from dpkt import tcp, ip, ethernet, arp, hexdump
    ImportError: No module named dpkt
    как импортировать ети модули?под сплоент
    извиняюсь нашёл # wget http://dpkt.googlecode.com/files/dpkt-1.7.tar.gz
     
    #930 boortyhuhtyu, 25 Mar 2012
    Last edited: 25 Mar 2012
  11. modestus

    modestus New Member

    Joined:
    12 Oct 2010
    Messages:
    33
    Likes Received:
    4
    Reputations:
    5
    2 !Knyaz2010!, уточните версию Python.
    Если там 2.x то ваша проблема скорей всего решится вот таким вот образом:
    Code:
    term = [B]u[/B]"Collège"
    sql_test = [B]u[/B]"""exec get_imported_company_name '{0}',1""".format(term)
    
    И да, не забывайте о параметризованных вызовах, как вам советует Gifts
     
  12. olgnet

    olgnet New Member

    Joined:
    8 Apr 2012
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    python и icq

    Здравствуйте, кто-то работал в python с icq, какие дополнения лучше всего для этого подходят(нашёл twisted, но непонятно как сделать просто отправку сообщений, не как реакция на входящее). Нужно только отправлять сообщения и отключаться... Заранее очень благодарен за помощь!
     
  13. shldn

    shldn New Member

    Joined:
    28 Nov 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    возможно ли как то средствами питона определить сервис и его версию при сканировании хоста?
     
  14. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    shldn Можно. Отвечая на не заданный вопрос "а как?" - точно так же, как на любом другом языке умеющим в сетевые сокеты
     
    _________________________
  15. shldn

    shldn New Member

    Joined:
    28 Nov 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    можно по подробнее по конкретную реализацию?
     
  16. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Просмотри исходник ICQ транспорта PyICQt, а именно необходимые участки кода, переделай под себя.

    Twisted - это сетевой фреймворк написанный на Python. И я не помню что бы в нем наблюдалось, взаимодействие с протоколом OSCAR.

    Если лень скачивать и устанавливать, можно просмотреть в кодгугл(SVN), Ссыль

    _http://code.google.com/p/pyicqt/source/browse/trunk/src/tlib/oscar.py
     
  17. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Желательно и вопрос задавать конкретнее.
     
  18. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    De-visible, привет. Писал тебе в асю - тишина. Хочу вот начать изучение питона, и хотел бы спросить несколько вопросов:

    1) Основые приимущества в сравнении с php?
    2) Реализована ли многопоточность?
    3) Тяжелый синтаксис (для человека, без проблем работающего на js + php)?
    4) Возможно какой-то учебник в онлайне? (желательно с простыми примерами)
    5) Поддерживаемость на популярных shared-хостингах (не VPS/VDS)

    Спасибо за ответ.
     
  19. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66

    1)Google -> Python vs PHP
    2)Да, конечно
    3)Проще синтаксиса я еще нигде не видел. Очень удобный.
    4)Первый пост этой темы глянь + google. Их море
    5)Почти везде поддерживается.
     
  20. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    Спасибо, но все же хочу спросить какой учебник более "доступный", может ты в курсе? Просто учебник учебнику рознь, может быть есть какие-то рекоммендации?