⊗pyPmDOLVT 125 of 129 menu

Баркарорӣ тавассути ҷадвали робита дар Python

Бигзор акнун корбар дар шаҳрҳои гуногун буда бошад. Дар ин ҳолат ҷадвали корбарон метавонад шакли зеринро дошта бошад:

корбарон
id ном шаҳр
1 user1 city1, city2, city3
2 user2 city1, city2
3 user3 city2, city3
4 user4 city1

Муайян аст, ки нигоҳ доштани маълумотҳо ба ин тавр нодуруст аст - шаҳрҳоро бояд ба ҷадвали ҷудогона гузошт. Он инҷост:

шаҳрҳо
id ном
1 city1
2 city2
3 city3

Аммо, мо бояд чунон кунем, ки ҳар як корбар тавассути чанд шаҳр даъват карда шавад. Бо истифода аз ду ҷадвал инкор имконнопазир аст.

Ба мо лозим меояд, ки чизе, ки номида мешавад ҷадвали робита, ки корбарро бо шаҳрҳои он пайванд мекунад.

Дар ҳар як сабти ин ҷадвал пайванди байни корбар ва як шаҳр нигоҳ дошта мешавад. Дар ин ҳолат барои як корбар дар ин ҷадвал ин қадар сабт хоҳад буд, ки дар чанд шаҳр ӯ будааст.

Ҷадвали робитаи мо инҷост:

users_cities
id user_id city_id
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 3 2
7 3 3
8 4 1

Ҷадвали корбарон танҳо номҳои корбаронро нигоҳ медорад, бе пайвандҳо:

users
id name
1 user1
2 user2
3 user3
4 user4
5 user5

Дархостҳо

Биёед дархостеро созем, ки бо ёрии он корбаронро бо шаҳрҳои онҳо берун кунем. Барои ин ба мо ду джоин лозим аст: аввалин джоин ба корбарон ҷадвали робитаро мепайвандад, ва джоини дуюм тавассути робитаҳо шаҳрҳоро мепайвандад:

SELECT users.name as user_name, cities.name as city_name FROM users LEFT JOIN users_cities ON users_cities.user_id=users.id LEFT JOIN cities ON users_cities.city_id=cities.id

Натиҷаи дархост

Натиҷаи дархости мо дар Python хоҳад дошт номи ҳар як корбар ин қадар маротиба, ки бо чанд шаҳр пайванд дорад:

{'user_name': 'user1', 'city_name': 'city1'} {'user_name': 'user1', 'city_name': 'city2'} {'user_name': 'user1', 'city_name': 'city3'} {'user_name': 'user2', 'city_name': 'city1'} {'user_name': 'user2', 'city_name': 'city2'} {'user_name': 'user3', 'city_name': 'city2'} {'user_name': 'user3', 'city_name': 'city3'} {'user_name': 'user4', 'city_name': 'city1'} {'user_name': 'user5', 'city_name': None}

Мувофиқтар мебуд, ки чунин луғат табдил дода шавад ва ба зерин табдил ёбад:

{ 'user1': ['city1', 'city2', 'city3'], 'user2': ['city1', 'city2'], 'user3': ['city2', 'city3'], 'user4': ['city1'], 'user5': [] }

Кодеро нависем, ки чунин табдилдиҳиро иҷро мекунад. Луғати холӣ user_cities_dct созем, ки дар он тадриҷан маълумотҳоро дар бораи корбарон ва шаҳрҳое, ки онҳо будаанд, ворид кунем. Дар ҳалқаи for ду тағирёбандаро эълон мекунем user_name ва city_name, дар онҳо номи корбар ва номи шаҳр нигоҳ дошта мешаванд. Баъд шартро менависем - агар корбар дар user_cities_dct набошад, пас ӯ ба ин луғат ҳамчун калид илова карда мешавад. Инчунин шартро нишон медиҳем, ки агар city_name None набошад, пас он ҳамчун қимати калид илова карда мешавад:

result = cursor.fetchall() user_cities_dct = {} for row in result: user_name = row['user_name'] city_name = row['city_name'] if user_name not in user_cities_dct: user_cities_dct[user_name] = [] if city_name is not None: user_cities_dct[user_name].append(city_name) print(user_cities_dct)

Вазифаҳои амалӣ

Бигзор маҳсулот ба чанд гурӯҳ тааллуқ дошта бошад. Сохти нигоҳдориро тавсиф кунед.

Дархостеро нависед, ки маҳсулотҳоро бо гурӯҳҳои онҳо мегирад.

Маълумотҳои гирифташударо ҳамчун рӯйхати ul чоп кунед ҳамин тавр, ки дар ҳар як li аввал номи маҳсулот истода бошад, ва пас аз ду нуқта дар як сатр тавассути вергул гурӯҳҳои ин маҳсулот рӯйхат карда шаванд. Тақрибан ҳамин тавр:

<ul> <li>product1: category1, category2, category3</li> <li>product2: category1, category3</li> <li>product3: category1</li> </ul>
Тоҷикӣ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мо барои коркарди сомона, таҳлил ва шахсӣ кардан аз cookie истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан