Создается ощущение, что Вы пытаетесь изучать Python, сравнивая его с другими языками. Если да, то с каким языком сравниваете? PHP?
Если с PHP, то можно объяснить так:
в PHP подстановка переменных в строку осуществляется так:
$var = 1;
$string = "My string. Variable: $var".
После этого интерпретатор PHP, когда натыкается при выполнени кода на такую запись, подставляет заместо $var значение этой переменной.
В Python же, разработчик языка пошел другим путем (хотя напомню, что Python старше, чем PHP).
Подстановка переменной тут осуществляется так (старый вариант):
var = 1
string = "My string. Variable: %d" % var
Либо так (начиная с Python 2.6 и далее):
var = 1
string = "My string. Variable: {}".format(var)
Причем второй вариант более “навороченный”, с поддержкой многих возможностей, про которые стоит почитать в документации:
https://docs.python.org/2/library/string.html#formatexamples (напомню, что в Python строки являются объектами. Так вот у строки можно вызвать этот самый метод format(). Т.е. “My string. Variable: {}”.format(…) можно представить как str.format()).
Каких-то других вариантов подстановки переменных в строку в Python нет, т.е. синтаксис подстановки переменных прямо в строку, как в PHP, в Python просто не предусмотрен. От этого отказался сам разработчик языка.
А при работе с базами данных эти методы использовать не рекомендуется, потому что в модулях, реализующих интерфейс к базам данных (например модуль sqlite3), обычно функционал подстановки значений переменных в строки реализован по-своему. Это позволяет добиться безопасной работы с БД.
Т.е. подстановка параметров в функции cursor.execute() (sqlite3) не является системной функцией, модуль sqlite3 просто предоставляет такую возможность (и рекомендует), но не запрещает Вам пользоваться стандартными функциями для подстановки.