Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 20, 2014 15:40:56

nahs
Зарегистрирован: 2014-09-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос в стороннюю таблицу

Добрый день!
Необходимо записать данные в таблицу, находящуюся в той же бд, что и проект, но не описанную в нем
код такой:

def send(request):
    text = request.GET["t"]
    cursor = connection.cursor()
    for key in request.GET.getlist('u'):
        cursor.execute("SELECT proton_personal.phone FROM proton_personal WHERE id="+key)
        phone = cursor.fetchone()  
        cursor.execute("INSERT INTO outbox(text, destinationnumber) VALUES ('%s','%s')",[text, phone])
        cursor.commit()
    return StreamingHttpResponse('ok')

INSERT не выполняется

Отредактировано nahs (Сен. 20, 2014 16:02:10)

Офлайн

#2 Сен. 20, 2014 16:31:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запрос в стороннюю таблицу

nahs
Необходимо записать данные в таблицу, находящуюся в той же бд, что и проект, но не описанную в нем
Не распарсил, честно говоря.
Проект в БД? Инсерт не выполняется в несуществующую таблицу?
Покажи логи.



Офлайн

#3 Сен. 20, 2014 18:10:00

nahs
Зарегистрирован: 2014-09-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос в стороннюю таблицу

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

зато частично разобрался со своим вопросом.
я неверно указал принимаемые переменные

def sendsms(request):
    text = request.GET["t"]
    cursor = connection.cursor()
    for key in request.GET.getlist('u[]'):
        cursor.execute("SELECT proton_personal.phone FROM proton_personal WHERE id=%s",[key])
        phone = cursor.fetchone()  
        cursor.execute("INSERT outbox(text, destinationnumber) VALUES ('%s','%s')", [text, phone])
        cursor.commit()
    return StreamingHttpResponse('ok')

но теперь проблема в том, что запрос возвращает 500 Internal Server Error

а если строку с insert убрать, то ошибки нет.

Офлайн

#4 Сен. 20, 2014 18:23:46

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Запрос в стороннюю таблицу

Ошибка тут:

>>> text = 'ddd'
>>> phone = 'ddd'
>>> "INSERT outbox(text, destinationnumber) VALUES ('%s','%s')", [text, phone]
("INSERT outbox(text, destinationnumber) VALUES ('%s','%s')", ['ddd', 'ddd'])

А надо:
>>> "INSERT outbox(text, destinationnumber) VALUES ('%s','%s')" % (text, phone)
"INSERT outbox(text, destinationnumber) VALUES ('ddd','ddd')"

Офлайн

#5 Сен. 20, 2014 18:25:59

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Запрос в стороннюю таблицу

Тут таже ошибка:

cursor.execute("SELECT proton_personal.phone FROM proton_personal WHERE id=%s",[key])

А вообще, лучше пишите через format:

cursor.execute("SELECT proton_personal.phone FROM proton_personal WHERE id={!s}".format(key))

Отредактировано Alen (Сен. 20, 2014 18:28:27)

Офлайн

#6 Сен. 20, 2014 18:42:18

nahs
Зарегистрирован: 2014-09-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос в стороннюю таблицу

Спасибо, но это не помогло.
Так же возвращает 500 Internal Server Error

Офлайн

#7 Сен. 20, 2014 18:49:09

nahs
Зарегистрирован: 2014-09-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос в стороннюю таблицу

может это чем поможет

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/send/?u[]=9510222222&u[]=9510111111&t=11164532

Django Version: 1.6.2
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'proton')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')


Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\nahs\workspace1\proton\proton\views.py" in sendsms
52. cursor.execute("INSERT INTO outbox(text, destinationnumber) VALUES ('%s','%s')" % (text, phone))
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute
69. return super(CursorDebugWrapper, self).execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute
51. return self.cursor.execute(sql)
File "C:\Python27\lib\site-packages\django\db\backends\mysql\base.py" in execute
124. return self.cursor.execute(query, args)
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py" in execute
204. if not self._defer_warnings: self._warning_check()
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py" in _warning_check
117. warn(w[-1], self.Warning, 3)

Exception Type: Warning at /send/
Exception Value: Field 'TextDecoded' doesn't have a default value

Отредактировано nahs (Сен. 20, 2014 18:50:16)

Офлайн

#8 Сен. 20, 2014 18:58:53

nahs
Зарегистрирован: 2014-09-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос в стороннюю таблицу

Всем спасибо!

оказывается проблема в таблице была.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version