мой код:
engine = sqlalchemy.create_engine("credentials")
connection = engine.connect()
day = 180601
query = "select * from Data where Name like '%{0}%'".format(str(day))
df = pd.DataFrame(connection.execute(query).fetchall())
но это не работает. когда я печатаю:
query = "select * from Data where Name like '%180601%'"
затем повторите тот же процесс, это работает нормально, хотя они производят одинаковые запросы. Я хочу изменить дни в цикле for.
Любые идеи были бы хорошы. Заранее спасибо!
Я на самом деле не использовал python (и когда я использовал это было около года назад в качестве введения), но, если я правильно помню, разве вам не нужно тройной кавычки (""") многострочной строки в Python?
привет Жоао, на самом деле они находятся в одной строке в моем файле.
@tepeal, тогда убедитесь, что ваш пост выглядит точно так же, как ваш файл. Я отредактировал ваше сообщение, чтобы удалить перенос строки, если вы говорите, что его на самом деле нет в вашем коде.
@Larnu спасибо. Я здесь новичок.
Обратите внимание, что это вообще плохая идея. Вы не должны использовать строковое форматирование для передачи значений в запросы. Если вы сделаете это привычкой, однажды вы окажетесь не на том конце SQL-инъекции. Обычно использование подходящих заполнителей также намного проще, поскольку драйвер обрабатывает цитирование и т. д. За вас.
Вот пример того, как вы должны передавать строку поиска: stackoverflow.com/questions/39488380/…






Я обнаружил, что с самим питоном проблем нет. Проблема в том, что sql не может получить первые 100 строк без предложения order by. Я думаю, что это еще одна ошибка, но добавление «order by col1» в конце запроса решило проблему.
Спасибо за ваше время.
@tepeal мне все это кажется очень необычным. Что вы видите при удалении ORDER BY CLAUSE для вопроса «упорядочить по»? Есть ли исключение python или вы просто получаете пустой набор результатов? Не могли бы вы инициализировать движок с помощью echo = True и сравнить полученные операторы sql?
@PabloHenkowski Я пытаюсь получить около 200 тыс. Строк из таблицы размером 5 м. Без предложения order by sql пытается выполнить запрос, но это занимает очень много времени, и я прерываюсь. Я думаю, что sql не может решить, какие первые 100 строк отображать. :) Когда я добавляю предложение order by, он сразу возвращает результат. Для меня это тоже звучит странно, но дело обстоит именно так.
Если вы поместите все содержимое запроса в одну строку, это сработает? Я говорю это, потому что в первом "%" у вас есть разрыв строки ...