溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flask中之數(shù)據(jù)庫框架和模型類一:SQLAlchemy配置說明,字段類型,約束條件

發(fā)布時間:2020-08-01 04:52:10 來源:網絡 閱讀:2349 作者:ck_god 欄目:編程語言

Python數(shù)據(jù)庫框架

#  pip install flask-sqlalchemy****
    數(shù)據(jù)庫引擎              URL
   MySQL                    mysql://username:password@hostname/database
    Postgres                  postgresql://username:password@hostname/database
    SQLite(Unix)       sqlite:////absolute/path/to/database
  SQLite(Windows)    sqlite:///c:/absolute/path/to/database

#  在這些 URL 中,hostname 表示 MySQL 服務所在的主機,可以是本地主機(localhost),
# 也可以是遠程服務器。數(shù)據(jù)庫服務器上可以托管多個數(shù)據(jù)庫,因此 database 表示要使用的
#  數(shù)據(jù)庫名。如果數(shù)據(jù)庫需要進行認證,username 和 password 表示數(shù)據(jù)庫用戶密令。
#  示例  hello.py:配置數(shù)據(jù)庫
from flask.ext.sqlalchemy import SQLAlchemy
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] =\
 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
db = SQLAlchemy(app)
#  db 對象是 SQLAlchemy 類的實例,表示程序使用的數(shù)據(jù)庫,同時還獲得了 Flask-SQLAlchemy
# 提供的所有功能。
# 定義模型
示例 5-2 hello.py:定義 Role 和 User 模型
class Role(db.Model):
             __tablename__ = 'roles'
             id = db.Column(db.Integer, primary_key=True)
             name = db.Column(db.String(64), unique=True)
             def __repr__(self):
                         return '<Role %r>' % self.name
class User(db.Model):
             __tablename__ = 'users'
             id = db.Column(db.Integer, primary_key=True)
             username = db.Column(db.String(64), unique=True, index=True)
            def __repr__(self):
                     return '<User %r>' % self.username
#  類變量 __tablename__ 定義在數(shù)據(jù)庫中使用的表名。
#  如果沒有定義 __tablename__,F(xiàn)lask-SQLAlchemy 會使用一個默認名字,
#  但默認的表名沒有遵守使用復數(shù)形式進行命名的約定,
#  所以最好由我們自己來指定表名。其余的類變量都是該模型的屬性,被定義為#  db.Column
#  類的實例。
#  db.Column 類構造函數(shù)的第一個參數(shù)是數(shù)據(jù)庫列和模型屬性的類型。
    類型名                  Python類型                     說  明
Integer                   int 普通整數(shù),              一般是 32 位
SmallInteger          int 取值范圍小的整數(shù)   一般是 16 位
BigInteger              int 或 long                    不限制精度的整數(shù)
Float                      float                              浮點數(shù)
Numeric                decimal.Decimal           定點數(shù)
String                    str                                 變長字符串
Text                       str               變長字符串,對較長或不限長度的字符串做了優(yōu)化
Unicode                 unicode                    變長 Unicode 字符串
UnicodeText         unicode                對較長或不限長度的字符串做了優(yōu)化
Boolean                 bool                           布爾值
Date                    datetime.date               日期
Time                    datetime.time               時間
DateTime           datetime.datetime          日期和時間
Interval                datetime.timedelta          時間間隔
Enum                   str                                   一 組字符串
PickleType           任何 Python 對象           自動使用 Pickle 序列化
LargeBinary         str                                   二進制文件
#  最常使用的SQLAlchemy列選項,也即約束條件

primary_key         如果設為 True,這列就是表的主鍵
unique                  如果設為 True,這列不允許出現(xiàn)重復的值
index                   如果設為 True,為這列創(chuàng)建索引,提升查詢效率
nullable                如果設為 True,這列允許使用空值;如果設為 False,這列不允許使用空值
default                 為這列定義默認值
doc                      字段說明 

# Flask-SQLAlchemy 要求每個模型都要定義主鍵,這一列經常命名為 id。
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI