Turinys
Mūsų programos yra daug daugiau nei paprasti puslapiai, todėl turime sukurti būdus, kaip saugoti duomenis tam tikroje patvarumo sistemoje, būtent čia Duomenų bazės Šiuo atveju reikia sukurti modelius, kad būtų galima nustatyti, kaip duomenų bazė mums padės.Modelis suteikia mums struktūrą, pagal kurią veiks didžiausia mūsų taikymo logika, čia mes suteikiame prasmę įvairiems subjektams, su kuriais turime turėti savo veiksmus.
Kolba turite galimybę naudoti įvairių tipų Duomenų bazės tik naudojant ORM SQLAlchemija.
ReikalavimaiMums reikia funkcinio įrenginio Kolba, ir atitinkamus leidimus, kad galėtumėte įdiegti daugiau komponentų pip. Jei turime galimybę dirbti Virtualenv tai daug labiau rekomenduojama, tačiau tai nėra būtina. Jei norime ekstrapoliuoti pamokų pavyzdžius, mums reikės kai kurių Duomenų bazė Ką MySQL jei norime funkcionalumą perkelti į daug tikresnę aplinką, nes pratybose mes dirbsime sqlite kaip supaprastinimo priemonė ir būtų praktiškesnė.
Pirmas dalykas, kurį mes padarysime, yra įdiegti SQLAlchemija, šis žingsnis yra labai paprastas, mes tik turime vykdyti šią komandą įjungtoje konsolėje pip:
pip įdiegti kolba-sqlalchemyPabaigoje gausime sėkmės pranešimą, jei viskas pavyko teisingai:
Dabar padėkime SQLAlchemija dirbti, tam ketiname sukurti nedidelę programą, kurioje pamatysime, kaip galime užmegzti ryšį su duomenų bazės varikliu. Tokiu atveju mūsų programa bus iškviesta flasko ir joje turime turėti tokią struktūrą.
1- Failas pavadinimu paleisti.py kuris bus programos šaknyje, šis failas iš esmės inicijuoja visą mūsų aplinką.
2- Aplankas pavadinimu flasko ir jo viduje yra failas, pavadintas __init__.py, kuriame pradėsime naudoti kolba ir iš SQLAlchemija tiesiogiai.
Pažiūrėkime šiame paveikslėlyje, kaip ši struktūra atrodo projekte:
Kai žinosime, ką turėtume turėti, turėsime pradinių failų turinį. Faile paleisti.py turime turėti šiuos dalykus:
iš „flasko import“ appapp.run (derinimas = tiesa)Tada į mūsų __init__.py failą įdėsime šį kodą:
iš kolbos importo Kolba iš kolbos.ext.sqlalchemy importas SQLAlchemyapp = Kolba (__ name __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: //flaskodb.db'db = SQLAlchemy (programa)Šį paskutinį kodą labai lengva paaiškinti, mes tiesiog importuojame Kolba, tada importuojame SQLAlchemija, sukuriame savo programą, kad ji veiktų su sistema, ir tada užmezgame ryšį su savo Duomenų bazė tokiu atveju sqlite, kur jis bus vadinamas flaskdb.db ir jis bus tame pačiame kataloge kaip ir mūsų programa. Galiausiai priskiriame objektą SQLAlchemija į kintamąjį, vadinamą db su kuriuo dirbsime vėliau.
Jei dabar pradėsime savo programą, ji turėtų prasidėti be klaidų, vienintelis dalykas yra tai, kad neturėsime rezultato, nes programa vis dar tuščia.
Kadangi dabar turime pagrindinę savo programos konfigūraciją, turime sukurti pagrindą savo modeliui sukurti, todėl savo aplanke turėsime sukurti aplanką, kuriame yra failas __init__.py ir ten mes sukursime reikiamą turinį.
Pažiūrėkime, kaip pakeista mūsų aplankų struktūra:
Kaip matome naujo produkto aplanke, mes sukūrėme 3 failus - failą __init__.py failas, kuris turi būti tuščias modeliai.py ir kita peržiūros.py. Naudodami šią struktūrą, mes pakeisime savo __init__.py iš savo programos šaknies, kur svarbu nepainioti su produktų __init__.py.
iš kolbos importo Kolba iš kolbos.ext.sqlalchemy importas SQLAlchemyapp = Kolba (__ vardas __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: ///flaskodb.db'db = SQLAlchemy (programa) iš importo flasko_product. (produktas) db.create_all ()Mes padarėme tai, kad sukūrę objektą db importavome rodinius iš naujo aplanko ir užregistravome techninis piešinys, galiausiai mes sakome db objektui, kad jis turi sukurti visas reikalingas lenteles. Dabar turime pakeisti savo failą modeliai.py produkto viduje ir įdėsime šį kodą:
iš flasko importo dbclass Produktas (db.Model): id = db.Column (db.Integer, Primary_key = True) name = db.Column (db.String (255)) price = db.Column (db.Float) def __init__ (save, vardą, kainą): self.name = vardas self.price = price def __repr __ (self): return ""% self.idČia iš esmės yra tai, ką mes darome apibrėžti klasę kurie kaip atributus turės laukus, kurių mums reikės iš mūsų produkto, taip pat jame yra keletas mūsų modelio apibrėžimo ir pateikimo būdų.
Kai viskas bus padaryta aukščiau, einame į failą peržiūros.py, todėl turime sukurti kodą, kuris leistų mums sąveikauti su mūsų modeliu, todėl turime parašyti taip:
iš kolbos importavimo užklausos, „jsonify“, „Blueprint“ iš „flasko“ importavimo programos, dbfrom flasko.product.models importuoti „Productproduct“ = „Blueprint“ („produktas“, __pavadinimas __) @ app.route ('/') @ app.route ('/ start') def start (): return „Sveiki atvykę į„ Flasko ““ @ app.route (' / product /') def product (id): product = Product.query.get_or_404 (id) return 'Produktas -% s, $% s'% ( product .name, product.price) @ app.route ('/ products') def products (): products = Product.query.all () res = {} produktams produktuose: res [product.id] = {' name ': product.name,' price ': str (product.price)} return jsonify(res)@app.route (' / create-product ', Method = [' POST ',]) def create_product (): name = request.form.get ('name') price = request.form.get ('price') product = Produktas (pavadinimas, kaina) db.session.add (produktas) db.session.commit () return 'Prekė buvo sėkmingai sukurtas “Pirmas dalykas, kurį pastebime, yra tai, kad šiame faile yra daug daugiau turinio nei likusioje mūsų programoje ir todėl, kad čia vyksta visas mūsų požiūris, pirmasis maršrutas yra mūsų taikymo pradžia, o ne apima didesnę paslaptį.
Antrasis ir trečiasis maršrutai yra skirti konsultacijai, kur galime ieškoti pagal produkto ID ir tuo atveju, jei nėra ko grąžinti 404 puslapio, taip pat turime galimybę išvardyti visus mūsų turimus produktus Duomenų bazė.
Paskutinis maršrutas yra tas, kuris leidžia mums naudoti šį metodą POST produkto sukūrimas ir vėlesnis saugojimas Duomenų bazė, tam mes parodome savo produkto modelį, kur tada perduodame minėtą atributą objektui db ir su jo metodais papildyti Y įsipareigoti pridedame prie Duomenų bazė.
Dabar belieka išbandyti mūsų programą - pridėti turinį, kuris bus įtrauktas į mūsų duomenų bazę, jei prisimename failą peržiūros.py sukuriame rodinį, kuris gauna duomenis per metodą POST ir jis yra atsakingas už įterpimų į jį atlikimą. Norėdami pridėti elementų, mes naudosime modulį Python paskambino prašymus leidžia mums siųsti duomenis per POST, jei jų neturime, tiesiog turime juos įdiegti naudodami šią komandą:
pip diegimo užklausosAntrinėje konsolėje mes pradėsime savo programą flasko kad serveris veiktų ir galėtų siųsti užklausas iš Python. Mūsų interaktyvioje konsolėje Python prie kurio prieiname rašydami žodį pitonas, turime atlikti šiuos veiksmus:
request.post ('http://127.0.0.1:5000/ create-product', data = {'name': 'product1', 'price': '50'})Ką mes padarėme, tai išsiuntėme užklausą per POST į mūsų maršrutą, kuris prideda elementus prie duomenų bazės, parametrai perduodami žodyne Python kuris labai panašus į objektą JSONAS.
Tai turėtų suteikti mums kodą 200, o tai reiškia, kad mūsų prašymas buvo sėkmingai įvykdytas, ir tai matome šiame paveikslėlyje:
Jei dabar produktų rodinyje pereisime prie savo programos, pamatysime, kaip per konsolę gauname ką tik įvestą informaciją:
Matome, kad turime sąrašą formatu JSONAS su mūsų produktu, kurį ką tik pridėjome, jei dabar ieškosime maršruto produktas / 1 pamatysime, kad taip pat gausime:
Žinoma, tai toli gražu nėra kažkas, ko verta pradėti gaminti, tačiau tai padeda mums sužinoti apie modelių pagrindus ir duomenų išlikimą Kolba, įdomiausia tai, kad kadangi mes neužklausėme SQL tiesioginis, jei pakeisime ryšį į sqlite už vieną MySQL Pavyzdžiui, mūsų programa ir toliau veiks kaip įprasta.
Tai baigę, mes jau žinome, kaip kurti modelius KolbaBe to, mes išmokome manipuliuoti paprastu, bet labai naudingu būdu ORM SQLAlchemija, kur šie komponentai yra labai svarbūs kuriant daug didesnes programas, nes jie leis mums pasiekti sudėtingesnių rezultatų atliekant mažiau darbo.