《Flask Web开发 基于Python的Web应用开发实战》书中关于定义sqlalchemy类的疑问

《Flask Web开发 基于Python的Web应用开发实战》书中关于定义sqlalchemy类的疑问


《Flask Web开发 基于Python的Web应用开发实战》一书中,使用sqlalchemy定义类,使用的是类属性,没有类构造函数(__init__()),也没有实例属性:

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)

    def __repr__(self):
        return '<User %r>' % self.username

使用时:

>>> from yourapplication import User
>>> admin = User(username='admin',email= '[email protected]')
>>> guest = User(username='guest', email='[email protected]')

而在Flask-SQLAlchemy快速入门中给的例子是使用了构造函数和实例属性:

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)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username

使用:

>>> from yourapplication import User
>>> admin = User('admin', '[email protected]')
>>> guest = User('guest', '[email protected]')

我的疑问是:在操作数据库时,它利用的是类属性(表结构)还是实例属性?抑或两者都可以?


2020-1-19:看了《流畅的Python》才知道这里使用了描述符,可我还是没弄懂。先留个线索,回头明白了再来补上。

猜你喜欢

转载自blog.csdn.net/qq_41090453/article/details/89397643
今日推荐