Merih Forum Programlama ve yazılım algoritmalar programlama python Flask flask uygulamasına veritabanı ekleme sqlalchemy, orm

  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
flask uygulamasına veritabanı ekleme sqlalchemy, orm

 
#1

Flask framework'ü varsayılan olarak bir veritabanı ile gelmez. Bu geliştiricilere büyük bir esneklik sağlamaktadır. Bütün veritabanları ile çalışabilirsiniz.
Başlangıç için python ile gelen sqlite veritabanını kullanacağız. Hem dosya tabanlı olduğundan, server kurulumu yoktur, hemde taşınabilir olması büyük bir ayrıcalıktır.
ORM:
Object Relational Mapper. ORM kütüphaneleri aracılığıyla tablolarınızı sınıf olarak kodlarsınız, onlar bu sınıfları veritabanında tablolara haritalarlar. Python ekosisteminde oldukça popular olan SQLAlchemy bu orm kütüphanelerinden biridir. Bu ORM'nin Flask eklentiside mevcuttur.
Eklentiyi kurmak için:
Kod:
$ pip install flask-sqlalchemy


Not:
Bu eklentiyi kullanmadan da flask ile geliştireceğiniz uygulamanızda sqlalchemy kütüphanesini kullanabilirsiniz.

Şimdi örnek olarak bir sınıf oluşturalım ve flask-sqlalchemy eklentisi ile kullanalım:
Kod:
#hello.py
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
class User(db.Model):
   __tablename__ = 'users'
   id = db.Column(db.Integer, primary_key=True, autoincrement=True)
   username = db.Column(db.String(64), unique=True)

Tablolara karşılık gelecek olan sınıfların 
Kod:
db.Model

 sınıfından türetilmeleri gerekir. 

Kod:
__tablename__

 attribute'ü özel olarak tanımlanır ve tablo isimlendirilirken bu isim kullanılır. Sınıfın diğer özellikleri tablo alanlarına karşılık gelirler. Bu alanların veri tipleri yine eklentiden alınır. 

Kod:
unique

, attributü o alanın tekil olmasını sağlar, tabloya aynı veri girilmesi durumunda hata verir. 

Kod:
autoincrement

, otomatik artacak değeri arttırılması istenen sütüna verilebilir. 

Kod:
primary_key

, o alanı birincil anahtar yapar.

Bu sınıfın tablo olarak oluşturulacağı veritabanı belirtilmelidir. Sqlite için 
Kod:
SQLALCHEMY_DATABASE_URI

:

Kod:
app.config.update(
   SQLALCHEMY_DATABASE_URI = 'sqlite:///data.sqlite',
   SECRET_KEY = "g.i/r5h)s-kc"
)

mysql için: 
Kod:
SQLALCHEMY_DATABASE_URI = 'mysql+driver://user:passwor@host/dbname'

 postgresql için: 

Kod:
SQLALCHEMY_DATABASE_URI = 'postgresql+driver://user:passwor@host/dbname'

örnek olarak mysql ve postgresql için de yapılandıralım:
Kod:
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://metmirr:12345@localhost/testdb'
SQLALCHEMY_DATABASE_URI = 'postgresql+psycopg2://metmirr:12345@localhost/testdb'

driverları yüklemek için:
Kod:
$pip install pymysql
$pip install psycopg2

Not: Sqlite hariç belirtilen veritabanları oluşturulmuş olmalıdır. Oluşturulan bu sınıfların tablolara dönüştürülmesi için 
Kod:
db.create_all()

 metodu çağrılmalıdır. Ek olarak sqlalchemy kendisi yüklü olan bu driverları kullanır, herhangi bir import işlemi yapmanıza gerek yoktur.

Veri tabanı için tam kod:
Kod:
#hello.py
from flask import Flask
from flask_script import Manager
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
manager = Manager(app)
db = SQLAlchemy(app)

app.config.update(
   SQLALCHEMY_DATABASE_URI = 'sqlite:///data.sqlite',
   SECRET_KEY = "g.i/r5h)s-kc"
)

class User(db.Model):
   __tablename__ = 'users'
   id = db.Column(db.Integer, primary_key=True, autoincrement=True)
   username = db.Column(db.String(64), unique=True)

@app.route('/')
def index():
   return "index page"

if __name__ == '__main__':
   manager.run()

Şimdi uygulamamız hazır durumda ancak tablomuz oluşturlmadı henüz, oluşturmak için:
Kod:
$ python hello.py shell
> from hello import db
> db.create_all()

Tablolar oluşturuldu. Kayıt ekleyelim:
Kod:
$ python hello.py shell
> from hello import User, db
> user = User(username="mtndmr")
> db.session.add(user)
> db.session.commit()
>
> # Sorgulama yapalım
> u = User.query.filter_by(username="mtndmr")
> u.username
mtndmr
> u.id
1

Kayıt eklemek için model sınıfın örneği oluşturulup ayrı ayrı alan değerleri verilebilir:
Kod:
> user = User()
> user.username = "mtndmr"
> db.session.add(user)
> db.session.commit()

yada örneğimizde direk model sınıfının yapılandırıcısına verilebilir. 
Kod:
session

 nesnesi nesneyi veritabanına eklemek için tutar. 

Kod:
commit()

 metodu ile nesne veritabanına işlenir.




Ara
Cevapla


[-]
Hızlı Cevap

İnsan Doğrulama:
Aşağıda görünen onay kutusunu işaretleyiniz. Bu işlem otomatik spam kayıtları önlemek için kullanılır.

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Flask ile örnek bir uygulama altyapısı efsane 1 2,136 30-05-2017, Saat: 17:14
Son Yorum: dalaylama
  database migration, Flask-migrate eklentisi efsane 0 1,524 30-05-2017, Saat: 16:21
Son Yorum: efsane
  sqlalchemy tablo sorgulama filtreleri ve sorgu çalıştırıcılar efsane 0 1,593 30-05-2017, Saat: 16:20
Son Yorum: efsane
  Flask-sqlalchemy ile tablo oluşturma, tablolar arasında ilişki tanımlama efsane 0 1,490 30-05-2017, Saat: 16:19
Son Yorum: efsane
  Flask-sqlalchemy eklentisi, sütun veri tipleri efsane 0 1,515 30-05-2017, Saat: 16:18
Son Yorum: efsane

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Konuyu Okuyanlar:
1 Ziyaretçi

   
Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2020 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-2020 Tüm hakları saklıdır.