Инверсия SQL КАК '%value %'

zerorpc достигает параллелизма с Gevent (ioloop + сопрограммы и т. Д.). Gevent является однопоточным и после инициализации может использоваться только из потока, использованного для его инициализации. В вашем случае это поток, вызывающий server.run(). Поэтому вы должны взаимодействовать только с методами zerorpc из того же потока.

Вы можете использовать обезьяну-патч ( http://www.gevent.org/intro.html#monkey-patching ), которая эффективно заставляет ваш объект Thread вести себя как сопрограмма. Если вы используете многопоточность только для параллельного ввода-вывода, этого может быть достаточно.

В противном случае, если вам нужны потоки для параллелизма ЦП, проверенное решение состоит в том, чтобы использовать субпроцессоров в качестве отдельных потоков. Вы можете использовать zerorpc между вашим главным сервером и рабочими (сокеты unix здесь вполне подходят). Поскольку рабочие все равно привязаны к центральному процессору и локальны, вы можете отключить сердцебиение между сервером и рабочими (Client/Server(heartbeat=0)).

Однако я не смог найти подробностей о том, как безопасно смешивать системные потоки и gevent.

5
задан Mat 3 December 2008 в 21:18
поделиться

3 ответа

Можно использовать столбец справа от подобного также:

SELECT domain FROM table WHERE 'www.google.com' LIKE CONCAT('%', domain);

или

SELECT domain FROM table WHERE 'www.google.com' LIKE CONCAT('%', domain, '%');

Это не особенно эффективно, но это работает.

14
ответ дан 18 December 2019 в 10:49
поделиться

В mysql можно использовать регулярные выражения (RLIKE) выполнить соответствия. Учитывая эту способность Вы могли сделать что-то вроде этого:

SELECT * FROM table WHERE 'www.google.com' RLIKE domain;

Кажется что путь RLIKE был реализован даже достаточно умно рассматривать точку в том поле (обычно подстановочный знак в regex) как литеральная точка.

MySQL's включение регулярных выражений дает Вам очень мощную способность проанализировать и строки поиска. Если требуется знать больше о регулярных выражениях, просто Google"regex". Можно также использовать одну из этих ссылок:

http://en.wikipedia.org/wiki/Regular_expression

http://www.regular-expressions.info/

http://www.codeproject.com/KB/string/re.aspx

2
ответ дан 18 December 2019 в 10:49
поделиться

Вы могли использовать немного обработки строк SQL для генерации эквивалента строки. EndsWith ():

SELECT * FROM table WHERE  
substring('www.google.com',
len('www.google.com') - len([domain]) ,
len([domain])+1) = [domain]
0
ответ дан 18 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: