İçindekiler
Uygulamalarımız basit sayfalardan çok daha fazlasıdır, bu nedenle verileri bazı kalıcılık sistemlerinde depolamak için yollar yaratmalıyız, işte burada veritabanları Veritabanının bize nasıl yardımcı olacağını belirlemek için söz konusu olan, modellerin yaratılması gerektiğidir.Bir model bize uygulamamızın en büyük mantığının altında çalışacağı yapıyı verir, eylemlerimizi uygulamak için sahip olmamız gereken farklı varlıklara bir anlam verdiğimiz yer burasıdır.
şişe farklı türleri kullanma olanağına sahipsiniz. veritabanları sadece kullanarak ORM SQLAlchemy.
Gereksinimlerİşlevsel bir kuruluma ihtiyacımız var şişeve daha fazla bileşen yükleyebilmek için ilgili izinler pip. çalışma imkanımız olursa sanal ortam çok daha fazla tavsiye edilir, ancak gerekli değildir. Öğretici örneklerini tahmin etmek istiyorsak, bazılarına ihtiyacımız olacak. Veri tabanı Ne MySQL İşlevselliği çok daha gerçek bir ortama getirmek istersek, birlikte çalışacağımız alıştırmalarda sqlit basitleştirme önlemi olarak ve daha pratik olmak için.
İlk yapacağımız şey yüklemek SQLAlchemy, bu adım çok basit, sadece aşağıdaki komutu çalıştırabilmemiz için konsolda çalıştırmamız gerekiyor pip:
pip yükleme şişesi-sqlalchemyHer şey doğru gittiyse sonunda bir başarı mesajı alacağız:
şimdi koyalım SQLAlchemy Bunun için bir Veritabanı motoruyla nasıl bağlantı kurabileceğimizi göreceğimiz küçük bir uygulama oluşturacağız. Bu durumda uygulamamız çağrılacak şişe ve onun içinde aşağıdaki yapıya sahip olmalıyız.
1- adlı bir dosya run.py Bu uygulamanın kökünde olacak, bu dosya tüm ortamımızın temel başlatmasını yapan dosyadır.
2- adlı bir klasör şişe ve bunun içinde, kullanımını başlatacağımız __init__.py adlı bir dosya şişe ve SQLAlchemy direkt olarak.
Aşağıdaki resimde bu yapının bir projede nasıl göründüğünü görelim:
Neye sahip olmamız gerektiğini bildiğimizde, ilk dosyalarımızın içeriğine sahip olacağız. Dosyanın içinde run.py aşağıdakilere sahip olmalıyız:
flasko import appapp.run'dan (debug = True)Ardından __init__.py dosyamıza şu kodu yerleştireceğiz:
flask'tan import Flask from flask.ext.sqlalchemy import SQLAlchemyapp = Flask (__ name __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: //flaskodb.db'db = SQLAlchemy (app)Bu son kodu açıklamak çok kolay, sadece içe aktarıyoruz şişe, sonra içe aktarıyoruz SQLAlchemy, çerçeve ile çalışmak için uygulamamızı kuruyoruz ve ardından uygulamamızla bağlantıyı kuruyoruz. Veri tabanı bu durumda sqlit, nerede çağrılacak flaskdb.db ve uygulamamızla aynı dizinde olacaktır. Sonunda nesneyi atadık SQLAlchemy adlı bir değişkene db hangi ile daha sonra çalışacağız.
Şimdi uygulamamızı başlatırsak hatasız başlaması gerekir, tek şey uygulama hala boş olduğu için bir sonuç alamayacağız.
Şimdi uygulamamızın temel konfigürasyonuna sahip olduğumuz için modelimizi oluşturmak için temelleri atmalıyız, bunun için klasörümüzde dosyayı içeren bir klasör oluşturmamız gerekecek. __init__.py ve gerekli içeriği burada üreteceğiz.
Klasör yapımızın nasıl değiştirildiğini görelim:
Yeni ürün klasörümüzde gördüğümüz gibi 3 dosya oluşturduk, bir dosya __init__.py boş olması gereken bir dosya modeller.py ve diğeri görünümler.py. Bu yapı ile __init__.py ürünümüzü, __init__.py ürünleriyle karıştırmamanın önemli olduğu uygulamamızın kökünden değiştireceğiz.
flask'tan import Flask from flask.ext.sqlalchemy import SQLAlchemyapp = Flask (__ name __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: ///flaskodb.db'db = SQLAlchemy (app) import flasko.product.register_blueprint (ürün) db.create_all ()Yaptığımız şey, nesnenin yaratılmasından sonra db görünümleri yeni klasörümüzden içe aktardık ve bir taslak, son olarak db nesnesine gerekli tüm tabloları oluşturması gerektiğini söyleriz. Şimdi dosyamızı değiştirmeliyiz modeller.py ürünün içinde ve aşağıdaki kodu yerleştireceğiz:
flasko'dan import dbclass Ürün (db.Model): id = db.Column (db.Integer, Primary_key = True) name = db.Column (db.String (255)) fiyat = db.Column (db.Float) def __init__ (self, name, price): self.name = name self.price = fiyat def __repr __ (self): dönüş ''% self.idBurada temel olarak yaptığımız şey bir sınıf tanımla ürünümüzden isteyeceğimiz alanları nitelik olarak taşıyacak olan modelimizin içerisinde de modelimizin tanımlanması ve temsili için birkaç yöntem bulunmaktadır.
Yukarıdakiler tamamlandıktan sonra dosyaya gidiyoruz görünümler.py, bunun içinde modelimiz ile etkileşime girmemizi sağlayan kodu oluşturmalıyız, bunun için aşağıdakileri yazmalıyız:
flask import request, jsonify, Blueprint fromflasko import app, dbfrom flasko.product.models import Productproduct = Blueprint ('product', __name __) @ app.route ('/') @ app.route ('/ start') def start (): "Flasko'ya Hoş Geldiniz" @ app.route ('/ ürün /') def ürün (id): ürün = Product.query.get_or_404 (id) return 'Product -% s, $% s'% ( product .name, product.price) @ app.route ('/ ürünler') def ürünler (): ürünler = Product.query.all () res = {} ürünlerdeki ürün için: res [product.id] = {' name ': product.name,' fiyat ': str (product.price)} return jsonify(res)@app.route (' / create-product ', methodlar = [' POST ',]) def create_product (): isim = request.form.get ('ad') fiyat = request.form.get ('fiyat') ürün = Ürün (ad, fiyat) db.session.add (ürün) db.session.commit () iade 'Ürün başarıyla oluşturuldu'Fark ettiğimiz ilk şey, bu dosyada uygulamamızın geri kalanından çok daha fazla içeriğe sahip olduğumuz ve bunun nedeni, görüşümüzün tüm yaşamının gerçekleştiği yer olmasıdır, ilk rota uygulamamızın başlangıcıdır ve daha büyük bir gizem içerir.
İkinci ve üçüncü yollar, ürün kimliğine göre arama yapabileceğimiz ve bir 404 sayfasını döndürecek hiçbir şey olmaması durumunda, danışma amaçlıdır, ayrıca sitemizde bulunan tüm ürünleri listeleme işlevine de sahibiz. Veri tabanı.
Son rota, yöntem boyunca bize izin veren rotadır. İLETİ bir ürünün yaratılması ve müteakip depolanması Veri tabanı, bunun için Ürün modelimizi somutlaştırıyoruz, burada söz konusu niteliği nesneye iletiyoruz db ve onun yöntemleriyle Ekle Y işlemek onu ekliyoruz Veri tabanı.
Şimdi uygulamamızı test etmek için geriye kalan şey, dosyada hatırlarsak Veritabanımıza girecek içeriği eklemek. görünümler.py yöntem aracılığıyla veri alan bir görünüm oluşturuyoruz İLETİ ve içindeki eklemeleri yapmaktan sorumlu kişidir. Eleman eklemek için bir modül kullanacağız piton isminde istekler bu, POST aracılığıyla veri göndermemize izin verir, elimizde yoksa, aşağıdaki komutla yüklememiz yeterlidir:
pip yükleme istekleriİkincil bir konsolda uygulamamıza başlayacağız şişe sunucunun açık olması ve istekleri gönderebilmesi için piton. Etkileşimli konsolumuzda piton kelimesini yazarak eriştiğimiz piton, aşağıdakileri yapmalıyız:
request.post ('http://127.0.0.1:5000/ create-product', veri = {'name': 'product1', 'price': '50'})Yaptığımız şey aracılığıyla bir istek göndermek oldu İLETİ Öğeleri Veritabanına ekleyen rotamıza, parametreler bir sözlükte iletilir piton bir nesneye çok benzeyen JSON.
Bu bize 200 kodunu vermelidir, bu, talebimizi etkin bir şekilde başardığımız anlamına gelir, bunu aşağıdaki resimde görebiliriz:
Şimdi ürünler görünümünde uygulamamıza gidersek, az önce girdiklerimizi konsoldan nasıl elde ettiğimizi göreceğiz:
şeklinde bir listemiz olduğunu görüyoruz. JSON yeni eklediğimiz ürünümüz ile şimdi rota üzerinde bir arama yaparsak ürün / 1 onu da alacağımızı göreceğiz:
Elbette bu, üretime alınmaya değer bir şey olmaktan çok uzak, ancak modellerin temellerini ve veri kalıcılığını öğrenmemize yardımcı oluyor. şişe, en ilginç şey, soruşturma yapmadığımız için SQL doğrudan, bağlantıyı değiştirirsek sqlit biri için MySQL örneğin uygulamamız her zamanki gibi çalışmaya devam edecek.
Bununla bu öğreticiyi bitirdik, zaten modellerin nasıl oluşturulacağını biliyoruz. şişeEk olarak, temel ama çok faydalı bir şekilde manipüle etmeyi öğrendik. ORM SQLAlchemy, burada bu bileşenler çok daha büyük uygulamalar oluştururken çok önemlidir, çünkü bunlar daha az iş ile daha karmaşık sonuçlar elde etmemizi sağlar.