2014-09-03 2 views
0

У меня есть данные, которые представляют собой имена пользователей с разных языков. Я осуществляет надлежащий процесс unicoding следующим образом:Python unicode excape underscore и двойные кавычки

while attempts < 3 and not success: 
    query = ur'''select gu_name from globaluser where gu_name = "{uname}"'''.format(uname=unicode(filerow['user_name'],'utf-8', errors='strict')) 
    try: 
     self.gdbCursor.execute(query.encode('utf-8')) 
     gUser = self.gdbCursor.fetchone() 

Но когда дело доходит до имен, как этот Name1_"GG"_Name1AnotherName я в конечном итоге получить следующее сообщение об ошибке:

ProgrammingError: (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near \'GG" Cooper"\' в строке 1')

Как Я правильно кодирую эти типы символов?

Update:

Основываясь на ответах я сделал следующее:

\'GG" Cooper"\' разрешить имя

    while attempts < 3 and not success: 
         #query = ur'''select gu_name from globaluser where gu_name = "{uname}"'''.format(uname=unicode(filerow['user_name'],'utf-8', errors='strict')) 
         uName = unicode(filerow['user_name'], 'utf-8') 
         query = ur'''select gu_name from globaluser where gu_name = "%s"''' 
         try: 
          #self.gdbCursor.execute(query.encode('utf-8')) 
          self.gdbCursor.execute((query % (uName)).encode('utf-8')) 
          gUser = self.gdbCursor.fetchone() 

пользователя Но я все еще получаю следующее сообщение об ошибке:

ProgrammingError: (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near \'GG" Cooper"\' at line 1') 
+2

Используйте параметры входа вместо строки и ваши имена будут должным образом спасся базы данных – Vor

+0

Можете ли вы дать мне хороший пример или ссылку на один? –

+0

@Vor Я обновил свой код с предоставленным вами ответом, но на самом деле не работал. Я также обновляю вопрос, чтобы показать, как я это сделал. –

ответ