>  기사  >  백엔드 개발  >  플라스크_sqlalchemy가 Python에서 데이터베이스를 작동하는 방법의 예

플라스크_sqlalchemy가 Python에서 데이터베이스를 작동하는 방법의 예

不言
不言앞으로
2018-11-15 14:06:294664검색

이 기사는 python에서 데이터베이스를 작동하는 방법에 대한 예입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

flask_sqlalchemy

낮은 수준의 데이터베이스 작업 지침을 높은 수준의 지침으로 추상화하는 ORM(Object-Relational Mapper) 프레임워크를 사용합니다. 지향적인 운영. 즉, 데이터베이스 엔진을 직접 사용한다면 SQL 연산문을 작성해야 하지만, ORM 프레임워크를 사용하면 테이블, 문서 등의 데이터베이스 엔터티 연산을 Python 객체 연산으로 단순화할 수 있습니다#🎜 🎜## 🎜🎜#SQLAlchemy는 Python 세계에서 ORM의 표준이 되었습니다. Flask는 ORM과 함께 자유롭게 사용할 수 있는 경량 웹 프레임워크입니다. 그 중 Flask-sqlalchemy는 Flask용으로 특별히 지정된 플러그인입니다.

Flask-SQLAlchemy에서는 데이터베이스가 URL을 사용하여 지정됩니다.

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

Installation

 pip install flask-sqlalchemy

데이터베이스 작업

1. # 🎜🎜#

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)
초기 데이터베이스를 생성하려면 SQLAlchemy.create_all() 메서드를 호출하여 테이블과 데이터베이스를 생성합니다.
   db.create_all()
데이터베이스가 생성되었습니다. 이제 일부 사용자를 생성해 보겠습니다

admin = User('admin', 'admin@example.com')
guest = User('guest', 'guest@example.com')
그러나 실제로는 아직 데이터베이스에 기록되지 않았으므로 데이터베이스에 기록되었는지 확인하겠습니다

db.session.add(admin)
db.session.add(guest)
db.session.commit()
#🎜🎜 #2. 관계형 데이터베이스 테이블 만들기

SQLAlchemy는 관계형 데이터의 가장 좋은 점은 관계입니다. 따라서 두 개의 관련 테이블을 예로 사용하는 애플리케이션을 생성하겠습니다. 가장 일반적인 관계는 일대다 관계입니다. 관계는 성립되기 전에 선언되기 때문에 아직 생성되지 않은 클래스를 문자열로 참조할 수 있습니다. 관계는 관계() 함수를 사용하여 표현합니다. 그러나 외래 키는 sqlalchemy.schema.ForeignKey 클래스를 사용하여 별도로 선언해야 합니다.

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는 역참조를 정의하고 User.role을 통해 Role 개체 및 속성에 액세스할 수 있습니다.


플라스크_sqlalchemy가 Python에서 데이터베이스를 작동하는 방법의 예

모든 데이터 쿼리

    print('角色',Role.query.all())
    print('用户',User.query.all())
플라스크_sqlalchemy가 Python에서 데이터베이스를 작동하는 방법의 예조건에 따른 데이터 쿼리
    # 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())
# 🎜🎜#

찾은 데이터 업데이트

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

플라스크_sqlalchemy가 Python에서 데이터베이스를 작동하는 방법의 예

필터 데이터 방법 2(필터), 이 메서드는 기본 SQL 문을 볼 수 있습니다

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

플라스크_sqlalchemy가 Python에서 데이터베이스를 작동하는 방법의 예

쿼리 정보 표시 제한

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

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

쿼리 정보 출력 정렬( 기본적으로 작은 것부터 큰 것까지 정렬), 큰 것에서 작은 것으로 정렬하려는 경우: desc(User.add_time)플라스크_sqlalchemy가 Python에서 데이터베이스를 작동하는 방법의 예

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

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)
#🎜🎜 #

Paging, 첫 번째 매개변수는 표시되는 데이터 페이지를 나타내고, 두 번째 매개변수는 각 페이지에 표시되는 데이터 수를 나타냅니다.

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

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

# 🎜🎜#플라스크_sqlalchemy가 Python에서 데이터베이스를 작동하는 방법의 예

위 내용은 플라스크_sqlalchemy가 Python에서 데이터베이스를 작동하는 방법의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제