Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel dafür, wie flask_sqlalchemy die Datenbank in Python betreibt

Beispiel dafür, wie flask_sqlalchemy die Datenbank in Python betreibt

不言
不言nach vorne
2018-11-15 14:06:294602Durchsuche

Dieser Artikel zeigt Ihnen, wie flask_sqlalchemy eine Datenbank in Python betreibt. Ich hoffe, dass er Ihnen als Referenz dienen wird.

flask_sqlalchemy

Verwendet das Object-Relational Mapper (ORM)-Framework, das Datenbankoperationsanweisungen auf niedriger Ebene in objektorientierte Operationen auf hoher Ebene abstrahiert. Mit anderen Worten: Wenn wir die Datenbank-Engine direkt verwenden, müssen wir SQL-Operationsanweisungen schreiben, aber wenn wir das ORM-Framework verwenden, können wir die Operation von Datenbankentitäten wie Tabellen und Dokumenten in Python-Objekten vereinfachen

SQLAlchemy ist zum Standard für ORM in der Python-Welt geworden. Flask ist ein leichtgewichtiges Web-Framework, das frei mit ORM verwendet werden kann. SQLalchemy ist ein Plug-in, das speziell für Flask entwickelt wurde.

In Flask-SQLAlchemy wird die Datenbank über eine URL angegeben.

MySQL -->  mysql://username:password@hostname/database

Installation

 pip install flask-sqlalchemy

Vorgang in der Datenbank

1. So erstellen Sie eine Datenbankoperationsverbindung

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:sheen@localhost/zaj_sql'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

Um die anfängliche Datenbank zu erstellen, rufen Sie die Methode SQLAlchemy.create_all() auf, um die Tabellen und die Datenbank zu erstellen:

   db.create_all()

Ihre Datenbank wurde generiert. Jetzt erstellen wir einige Benutzer

admin = User('admin', 'admin@example.com')
guest = User('guest', 'guest@example.com')

, die jedoch noch nicht tatsächlich in die Datenbank geschrieben wurden. Stellen wir also sicher, dass sie in die Datenbank geschrieben wurden

db.session.add(admin)
db.session.add(guest)
db.session.commit()

2. Erstellen Sie die Beziehungstyp-Datenbanktabelle

SQLAlchemy ist mit einer relationalen Datenbank verbunden. Das Beste an relationalen Daten sind Beziehungen. Daher erstellen wir eine Anwendung am Beispiel zweier verwandter Tabellen.
Die häufigste Beziehung ist die Eins-zu-Viele-Beziehung. Da Beziehungen deklariert werden, bevor sie eingerichtet werden, können Sie Zeichenfolgen verwenden, um auf Klassen zu verweisen, die noch nicht erstellt wurden
Beziehungen werden mit der Funktion relation() dargestellt. Fremdschlüssel müssen jedoch separat mit der Klasse sqlalchemy.schema.ForeignKey deklariert werden.

from datetime import datetime
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
import pymysql
from sqlalchemy import desc

app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:sheen@localhost/zaj_sql'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
bootstrap = Bootstrap(app)

class User(db.Model):
    id = db.Column(db.Integer,autoincrement=True,primary_key=True)
    name = db.Column(db.String(50),unique=True)
    passwd = db.Column(db.String(100))
    add_time = db.Column(db.DATETIME,default=datetime.now())
    gender = db.Column(db.BOOLEAN,default=True)
    role_id = db.Column(db.INTEGER,db.ForeignKey('role.id'))

    def __repr__(self):
        return '<user:>' %(self.name)

class Role(db.Model):
    id = db.Column(db.INTEGER,autoincrement=True,primary_key=True)
    name = db.Column(db.String(50),unique=True)
    users = db.relationship('User',backref='role')
    # 给Role模型添加users属性
    # backref 是定义反向引用
        def __repr__(self):
        return '<role:>' % (self.name)
if __name__ =='__main__':
    # 1. 创建数据库表
    # db.drop_all()
    # db.create_all()
    # # 2. 创建role数据库表数据
    role_1 = Role(name='超级会员')
    role_2 = Role(name='普通会员')

    db.session.add(role_1)
    db.session.add(role_2)

    db.session.commit()

    # # # 3. 添加user表内数据,100个用户,50个为超级会员,50个为普通会员
    for i in range(1,13):
        if i%2 == 0:
            u = User(name='sheen'+str(i),passwd='sheen',role_id=1)
            db.session.add(u)
        else:
            u = User(name='star'+str(i),passwd='star',role_id=2)
            db.session.add(u)
    db.session.commit()</role:></user:>

backref definiert eine Rückreferenz und kann über User.role auf Rollenobjekte und -eigenschaften zugreifen.
Beispiel dafür, wie flask_sqlalchemy die Datenbank in Python betreibt

Beispiel dafür, wie flask_sqlalchemy die Datenbank in Python betreibt

Alle Daten abfragen

    print('角色',Role.query.all())
    print('用户',User.query.all())

Daten basierend auf Bedingungen abfragen

    # select * from tablename where xxx=xxxxx
    print(User.query.filter_by(role_id=1).all())
    print(Role.query.filter_by().all())
    print(User.query.filter_by(role_id=2).all())

Beispiel dafür, wie flask_sqlalchemy die Datenbank in Python betreibt

Aktualisieren Sie die gefundenen Daten

 print('进行数据更新',end='\n')
    u =User.query.filter_by(name='sheen2').first()
    print(u)
    u.passwd = '123'
    db.session.add(u)
    db.session.commit()

Beispiel dafür, wie flask_sqlalchemy die Datenbank in Python betreibt

Filterdatenmethode 2 (Filter), diese Methode kann die native SQL-Anweisung sehen

    print('数据筛选', end='\n')
    user = User.query.filter(User.role_id==1)
    print(user)

Beispiel dafür, wie flask_sqlalchemy die Datenbank in Python betreibt

Beschränken Sie die Anzeige der abgefragten Informationen

    print('限制查询数据的显示', end='\n')

    users = User.query.filter_by(role_id=1).limit(3).all()
    print(users)

Sortieren Sie die Ausgabe der abgefragten Informationen (standardmäßig von klein nach groß sortieren), wenn Sie von groß nach klein sortieren möchten: desc(User. add_time)

    print('数据再处理', end='\n')
    users = User.query.filter_by(role_id=1).order_by(desc(User.name)).all()
    print(users)

Mehrere Filterfunktionen

print('多个过滤函数', end='\n')
    users = User.query.filter_by(role_id=1).order_by(desc(User.name)).limit(3).offset(1).all()
    print(users)
    users = User.query.filter_by(role_id=1).order_by(desc(User.name)).slice(1,4).all()
    print(users)

Beispiel dafür, wie flask_sqlalchemy die Datenbank in Python betreibt

Page, der erste Parameter gibt an, welche Datenseite angezeigt wird, und der zweite Parameter gibt an, welche Datenseite angezeigt wird wird angezeigt Wie viele Daten

    print('分页显示', end='\n')

    users = User.query.paginate(1,5)
    print(users.items)
    users = User.query.paginate(2, 5)
    print(users.items)

Beispiel dafür, wie flask_sqlalchemy die Datenbank in Python betreibt

Das obige ist der detaillierte Inhalt vonBeispiel dafür, wie flask_sqlalchemy die Datenbank in Python betreibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen