Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вывод ячейки базы данных

многабукаф Знаток (390), на голосовании 1 месяц назад
Здравствуйте!
из базы данных нужно выдернуть значение ячейки.
prefix_nomera_stroki=str('cursor.execute("SELECT posting_number FROM BAZA WHERE id=')
suffiks_nomera_stroki=str('").fetchone()[0]')
print(prefix_nomera_stroki_posting_number+'2'+suffiks_nomera_stroki)
выводит просто текст.
Как заставить выводить содержимое ячейки???
Голосование за лучший ответ
Roots Мудрец (13532) 2 месяца назад
Говнокод потому что что.
И ещё потому что ты сочиняешь синтаксис вместо использования правильного.
А, ну и ещё потому что ты не читаешь документацию библиотеки перед её использованием.
Ой, забыл, ещё потому что ты не знаешь, какие есть типы данных и чем строка текста отличается от строки кода.

 cursor.execute("SELECT posting_number FROM BAZA WHERE id=?", 2)

print(cursor.fetchone())

Я не знаю, зачем ты написал этот ужас, но Python делает ровно то, что ты ему сказал. Он выводит строки.
Ты засунул код в строку. Для интерпретатора это такая же строка, как и, к примеру, "dorodk+$%-3828". Он не будет её выполнять.
Кроме того, нельзя вводить переменные в SQL запрос через f-строки, format() или конкатенацию.
Это прямой путь к SQL-инъекции и взлому твоей базы данных.
Нужно использовать ?.

Короче, учи базовый синтаксис Python, а уже потом базы данных используй.
многабукафЗнаток (390) 2 месяца назад
подскажи пожалуйста как правильно написать? мне нужно потом содержимое ячейки засунуть в цикл.
Roots Мудрец (13532) многабукаф, я же привёл в ответе пример правильного кода. Просто удали свою писанину, которую ты показал в вопросе, и замени его на две моих строки кода. Если что-то будет неправильно работать, спроси, отвечу.
многабукафЗнаток (390) 2 месяца назад
cursor.execute('SELECT posting_number FROM BAZA WHERE id=?', 2)
sqlite3.ProgrammingError: parameters are of unsupported type
Roots Мудрец (13532) многабукаф, двойку в кавычки засунь '2'
многабукафЗнаток (390) 2 месяца назад
cursor.execute("SELECT posting_number FROM BAZA WHERE id=?", 2).fetchone()[0] ТАК??????????????????
получился мой "говнокод"
ты разбил мой говнокод на две строчки получается которые в цикл хрен засунешь теперь!!!!!!
Roots Мудрец (13532) И здесь получится не твой говнокод, а совсем другой код Ты даже не запускал функции cursor.execute или fetchall У тебя код запроса к БД был внутри кавычек Потом ты этот код в принте выводил, но не выполнял
многабукафЗнаток (390) 2 месяца назад
строка
print(cursor.execute("SELECT posting_number FROM MC_OZON_BAZA_dlya_peredachi_novyh_zakazov_V_MC WHERE id=?", '2').fetchone()[0])
работает нормально. Как вместо 2 воткнуть a для цикла????????
Похожие вопросы