Здравствуйте, нужна помощь в Python+PostgreSQL.
У меня есть приложение python с графическим интерфейсом PyQT5.
Есть база данных на PostgreSQL 12.
В базе данных есть товары, точнее их названия, и в этих названиях так же находится другая информация, то-есть (Вид, метры, фильтр и т.д)
Мне нужно вытащить эту информацию из всех товаров , чтоб я мог ее подключить к фильтрам и т.д чтоб можно было фильтровать товары по этим данным. (Поиск)
Подскажите как лучше всего это сделать?
Вот пример как нужно разделить товары:
Нужно вот так вытащить эту информацию от туда. Как видно у всех товаров разная длина. И нужно чтоб автоматически он вытаскивал эту инфу со всех товаров. В ручную это слишком долго и не получится.
Я смог первые 14 товаров которые по длине одинаковые сделать через
Вот код через который я смог разделить первые 14 товаров:
Но это сделано через
Вот код для подключения к базе данных:
Подскажите как можно изменить код чтобы добиться того что мне нужно для всех товаров или как добавить автоматически во все товары невидимый разделить и с помощью него разделить все товары так.
На прикрепленных скринах:
База данных (список товаров)
Работа substring и split_part
Отработка кода выше python
У меня есть приложение python с графическим интерфейсом PyQT5.
Есть база данных на PostgreSQL 12.
В базе данных есть товары, точнее их названия, и в этих названиях так же находится другая информация, то-есть (Вид, метры, фильтр и т.д)
Мне нужно вытащить эту информацию из всех товаров , чтоб я мог ее подключить к фильтрам и т.д чтоб можно было фильтровать товары по этим данным. (Поиск)
Подскажите как лучше всего это сделать?
Вот пример как нужно разделить товары:
1)Арматура ГЛАДКАЯ А1/катанка/круг ф10 2й сорт (11,7м)
1:ГЛАДКАЯ
2:А1/катанка/круг
3:ф10
4:2й сорт
511,7м)
2)Арматура композитная (бухта 50м.п.) АКС -6/АСП-6
1:композитная
2:бухта 50м.п.
3:АКС -6/АСП-6
3)Балка двутавровая - вес 1 м.п. 10
1:двутавровая
2:вес 1 м.п.
3:10
4)балка двутавровая колонная 20Ш1 3сп-5
1:двутавровая колонная
2:20Ш1
3:3сп-5
Нужно вот так вытащить эту информацию от туда. Как видно у всех товаров разная длина. И нужно чтоб автоматически он вытаскивал эту инфу со всех товаров. В ручную это слишком долго и не получится.
Мне говорили что можно во всех товарах автоматически расставить разделитель который будет служить разделению названий. Тоесть использовать невидимый символ и с помощью него поделить товары все как нужно. Но как автоматически поставить там где нужно во всех товарах этот невидимый разделить я так и не смог и прогнать все товары для разделения.
Я смог первые 14 товаров которые по длине одинаковые сделать через
substring
и split_part
. Но я не могу так разделить все товары правильно ведь длина разная у всех.Вот код через который я смог разделить первые 14 товаров:
Python:
def data_item(self):
connecting = psycopg2.connect(dbname='client_mbox_', user='su_mbox_user', host='195.93.152.122',
password='VN0st1m#base#vft', port=5432)
cursor = connecting.cursor()
# list
cursor.execute(f'SELECT item FROM list')
# list view
items = cursor.fetchall()
#print(items)
# TESTING ARMATURA
# formating list (NAME)
cursor.execute(f'SELECT SUBSTRING(item, 0, 9) FROM list;')
item_name = cursor.fetchall()
for number, text in enumerate(item_name):
if number == 14:
break
else:
print(text)
# formating list (VALUE)
cursor.execute(f'SELECT SUBSTRING(item, 10, 8) FROM list;')
item_value = cursor.fetchall()
for number, text in enumerate(item_value):
if number == 14:
break
else:
print(text)
# formating list (BOX)
cursor.execute(f'SELECT SUBSTRING(item, 18, 18) FROM list;')
item_box = cursor.fetchall()
for number, text in enumerate(item_box):
if number == 14:
break
else:
print(text)
# formating list (FORMAT)
cursor.execute(f'SELECT SUBSTRING(item, 34, 38) FROM list;')
item_format = cursor.fetchall()
for number, text in enumerate(item_format):
if number == 14:
break
else:
print(text)
Но это сделано через
substring
и того эффекта который мне нужен нету. Вот код для подключения к базе данных:
Python:
connecting = psycopg2.connect(dbname='client_mbox_', user='su_mbox_user', host='195.93.152.122',
password='VN0st1m#base#vft', port=5432)
cursor = connecting.cursor()
Подскажите как можно изменить код чтобы добиться того что мне нужно для всех товаров или как добавить автоматически во все товары невидимый разделить и с помощью него разделить все товары так.
На прикрепленных скринах:
База данных (список товаров)
Работа substring и split_part
Отработка кода выше python