def chunks(l, n):
for i in range(0, len(l), n):
yield l[i:i + n]
#Считываем, убираем дубликаты, сортируем
names = sorted({line.strip() for line in open('users.txt', encoding='utf-8')})
#Разбиваем на примерно равные части и генерируем словарь,
#ключом которого служат первая буква первой и последней фамилии в списке.
catalog = {'{}-{}'.format(item[0][0], item[-1][0]):item for item in chunks(names, 100)}
from itertools import groupby
from operator import itemgetter
# Разбиваем на группы по первой букве
def chunks(items):
for letter, names in groupby(sorted(items), key=itemgetter(0)):
yield list(names)
# Сливаем вместе группы меньше min_len в группы не больше max_len
def reshape(items, min_len, max_len):
buffer = []
for item in items:
if len(buffer) >= max_len:
yield sorted(buffer)
buffer = []
if len(item) <= min_len:
buffer += item
else:
yield item
yield sorted(buffer)
#Считываем и сортируем
names = sorted(line.strip() for line in open('users.txt', encoding='utf-8'))
#Разбиваем на примерно равные части
groups_list = reshape(chunks(names), 50, 100)
#генерируем словарь ключом которого служат первая буква первой и последней фамилии в списке
catalog = {'{}-{}'.format(item[0][0], item[-1][0]):item for item in groups_list}
SELECT id FROM some_table WHERE to_tsquery('причёска') @@ to_tsvector(array_to_string(keys, ', '));
CREATE INDEX keys_fts_idx ON some_table USING gin(to_tsvector(array_to_string(keys, ', ')));
ALTER TABLE some_table ADD COLUMN keys_fts tsvector;
CREATE INDEX keys_fts_idx ON some_table USING gin(keys_fts);
CREATE FUNCTION keys_fts_update() RETURNS TRIGGER AS $$
BEGIN
IF (TG_OP = 'UPDATE') THEN
IF OLD.keys <> NEW.keys THEN
NEW.keys_fts = to_tsvector(array_to_string(NEW.keys, ', '));
RETURN NEW;
ELSE
RETURN NEW;
END IF;
ELSIF (TG_OP = 'INSERT') THEN
NEW.keys_fts = to_tsvector(array_to_string(NEW.keys, ', '));
RETURN NEW;
END IF;
RETURN NULL;
END;
$$ LANGUAGE 'plpgsql';
CREATE TRIGGER keys_fts_update BEFORE INSERT OR UPDATE ON some_table
FOR EACH ROW EXECUTE PROCEDURE keys_fts_update();
select u.name from users as u
left join articles as a on u.id = a.user_id
where a.id is null;
create table images(id int, image bytea);
insert into images values (1, pg_read_file('/path/to/image.jpg')::bytea);
create table images (id int, image oid);
insert into images values (1, lo_import('/path/to/image.jpg'));
SELECT reltuples FROM pg_class WHERE oid = 'schema_name.table_name'::regclass;
SELECT CASE WHEN some_field~E'^\\d+$' THEN some_field::integer ELSE 0 END FROM some_table;
CREATE OR REPLACE FUNCTION cast_to_int(text) RETURNS integer AS $$
BEGIN
RETURN CAST($1::varchar AS integer);
EXCEPTION
WHEN invalid_text_representation THEN
RETURN 0;
END;
$$ LANGUAGE plpgsql IMMUTABLE;
CREATE CAST (text as integer) WITH FUNCTION cast_to_int(text);
SELECT CAST('asd'::text as integer)
вернёт 0 from PIL import Image
img = Image.open("img.jpg")
w5 = (img.size[0] // 100) * 5
h5 = (img.size[1] // 100) * 5
croped = img.crop(
(
w5,
h5,
img.size[0] - w5,
img.size[1] - h5
)
)
croped.save("croped.jpg")
from PIL import Image
from PIL import ImageOps
img = Image.open("img.jpg")
w5 = (img.size[0] // 100) * 5
croped = ImageOps.crop(img, w5)
croped.save("croped.jpg")