"Enter"a basıp içeriğe geçin

Flask – SQLAlchemy Kullanımı

Merhaba, bu bir belgelendirme çalışması değildir, ileride hatırlamam için bıraktığım küçük bir not niteliği taşımaktadır. Fazla beklentiye girmeyin =) Ha kodları okuyabilirseniz size kesinlikle bir şeyler katacaktır.

Kurulum

~$ pip install flask-sqlalchemy

Temel Yapı

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

app = Flask(__name__)
app.config['SECRET_KEY'] = 'MySecretKey'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'

db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    username = db.Column(db.String(20), unique = True, nullable = False)
    email = db.Column(db.String(120), nullable = False)
    password = db.Column(db.String(32), nullable = False)
    imageFile = db.Column(db.String(20), nullable = False, default = "default.jpg")
    posts = db.relationship('Post', backref = 'author', lazy = True)

    def __repr__(self):
        return "User('{0}','{1}','{2}')".format(self.username, self.email, self.imageFile)

class Post(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    userId = db.Column(db.Integer, db.ForeignKey('user.id'), nullable = False)
    title = db.Column(db.String(100), nullable = False)
    datePosted = db.Column(db.DateTime, nullable = False, default = datetime.utcnow)
    content = db.Column(db.Text, nullable = False)

    def __repr__(self):
        return "User('{0}','{1}')".format(self.title, self.datePosted)

@app.route('/')
def index():
    return "Merhaba SQLAlchemy :p"

if __name__ == '__main__':
    app.run(debug = True, port = 1337, use_reloader = True)

Kullanım Örnekleri

>>> from app import db
>>> db.create_all()

>>> from app import User, Post

>>> user_1 = User(uername = "Yunus", email = "mail@mail.mail", password = "123456")
>>> user_2 = User(uername = "Mualla", email = "meil@mail.mail", password = "123456")

>>> db.session.add(user_1)
>>> db.session.add(user_2)
>>> db.session.commit()

>>> User.query.all()
>>> User.query.first()
>>> User.query.filter_by(username = "Yunus").all()
>>> User.query.filter_by(username = "Yunus").first()

>>> user = User.query.filter_by(username = "Yunus").first()
>>> user = User.query.get(1)
>>> user.posts

>>> post = Post.query.first()
>>> post.author

>>> db.session.delete(user)
>>> db.session.commit()

>>> db.drop_all()

İlk Yorum Sizden Gelsin

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.