У меня есть команда управленияВыполнение SQL В функции
from django.db import connection
from django.core.management.base import BaseCommand
class Command(BaseCommand):
args = "[id]"
def handle(self, id, **options):
ids = []
if '-' in id:
splitted = id.split('-')
for n in range(int(splitted[0]), int(splitted[1])+1):
ids.append(n)
else:
ids.append(id)
c = connection.cursor()
c.execute('SELECT content FROM log WHERE id IN %s', [ids])
Я могу запустить это, введя имя команды и указать В параметре (ID)
Когда я бегу command 200-205
, для цикла возвращает список:
ids =[200, 201, 202, 203, 204, 205]
И ставит это в запросе:
SELECT content FROM log WHERE id IN (200, 201, 202, 203, 204, 205)
Briljant!
Когда я бегу command 200
Идентификаторы будет:
ids = [200]
Выполнение запроса возвращает ошибку:
(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 1")
Похоже SELECT content FROM log WHERE id IN (200)
не работает в то время как он должен.
Что я здесь делаю неправильно?
Если я это сделаю, я получаю сообщение об ошибке: _mysql_exceptions.Warning: Усеченное неправильное значение DOUBLE: '' 200 '' – nelsonvarela
Ничего ... Ваше решение сработало для меня! – nelsonvarela
Вы поехали с опцией (1) или опцией (2)? –