2012-03-10 2 views
1

Проблема, которую я испытываю, заключается в попытке вставить некоторые значения в базу данных, созданную моделью Django, значения строго численные, но при попытке вставить ее я получаю сообщение об ошибке :Неверное значение - python для модели в Django

567523 
<type 'int'> 
Warning: Incorrect integer value: 'id' for column 'id_unidad' at row 1 
cursor.execute(sql, ('id',)) 

код, я использую для вставки с использованием запроса MySQL является:

import MySQLdb 
import _mysql 

id = 567523 
print id 
print type(id) 

sql = """INSERT INTO gprs_evento (id_unidad) VALUES (%s)""" 

db = MySQLdb.Connect(host="localhost", user="*****",passwd="******",db="gp") 
cursor = db.cursor() 

try : 
    cursor.execute(sql, ('id',)) 
    db.commit() 
except _mysql.Error, e: 
    print "Error %d: %s" % (e.args[0], e.args[1]) 

Django модели я использую:

from django.db import models 

class Evento(models.Model): 
    id_unidad = models.IntegerField(max_length=15) 

Попытки вставить в каждом поле в базе данных:

id: 13831010240120 
<type 'long'> 
ip: 3235021102 
<type 'long'> 
e: 2 
<type 'int'> 
H: 102718.0 
<type 'float'> 
LN: 210.128871 
<type 'float'> 
LO: 3203.323664 
<type 'float'> 
V: 28.0 
<type 'float'> 
A: 90.0 
<type 'float'> 
F: 40101.0 
<type 'float'> 

В модели я использую ссылку из Field types и попытаться IntegerField, BigIntegerField, DecimalField но ничего, я просто вставил нормальное число 15 символов из Python.

ответ

2

Вы пытаетесь вставить строку "id", а не значение переменной id.

Оно должно быть:

cursor.execute(sql, (id,)) 

Конечно, нет никаких причин, чтобы использовать сырые SQL для этого вообще.

+0

спасибо, что было в конфликте только для этого, я - относительное программирование новичков в python. приветствия и благодарности. – user987055

0

Как сказал Даниэль, «нет причин использовать необработанный SQL». Вместо этого, вы должны использовать модель синтаксиса Джанго для вставки новых элементов в datebase, например, так:

e = Evento.objects.create(id_unidad=id) 

Это одна линия может заменить все ниже print type(id). Что еще более важно, использование моделей Django для манипуляции с базами данных дает вам бесплатную защиту от SQL-инъекций.

 Смежные вопросы

  • Нет связанных вопросов^_^