Форум сайта python.su
Добрый день!
Мне нужно создать транзакцию, включающую LIKE. Примерный код такой:
import sqlite3 db = sqlite3.connect(':memory:') dbc = db.cursor() dbc.execute ('create table if not exists DATA (\ NO integer primary \ key autoincrement \ ,PASTE text \ )' ) dbc.execute ('insert into DATA values (?,?)',(None,'liker')) dbc.execute ("select NO from DATA where PASTE like '%like%'") print(dbc.fetchall()) db.close()
query = 'begin;' query += 'select NO from DATA where PASTE like "%s"' % "%{0}%".format('like') query += ';commit;' print(query) dbc.executescript(query)
Офлайн
db.autocommit(False) cursor = db.cursor() try: cursor.execute("Your SQL") cursor.execute("Another sql") db.commit() except: db.rollback()
Офлайн
FishHook
Спасибо! Мне кажется, или единая транзакция все равно быстрее выполняется через executescript?
Отредактировано vanvanov (Янв. 26, 2018 00:37:36)
Офлайн
vanvanovВы вполне способны написать небольшой скрипт и замерить среднее время выполнения разных способов. От себя скажу, что во-первых транзакции не для того, чтобы ускорять время выполнения запроса, а для сохранения целостности данных, а во-вторых Sqlite - не та СУБД, которую используют в высоконагруженном проекте.
Мне кажется, или единая транзакция все равно быстрее выполняется через executescript?
Офлайн
Здравствуйте. А как можно замерять время выполнения скриптов?
Офлайн
MaratD
Вы тему топика и форума вообще видели? Какое отношение ваш попрос имеет к базам данных sqlite3, like и string substitution в частности?
Не надо так делать.
Офлайн
MaratD
Здравствуйте. А как можно замерять время выполнения скриптов?
>>> import time >>> start = time.time() >>> end = time.time() >>> end - start 4.233328580856323
>>> import shared as sh >>> timer = sh.Timer('Моя функция') >>> timer.start() >>> timer.end() 0:Моя функция:ИНФОРМАЦИЯ:Операция завершена за 4.374298 с.
Офлайн