Python数据库框架
# pip install flask-sqlalchemy****
数据库引擎 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),
# 也可以是远程服务器。数据库服务器上可以托管多个数据库,因此 database 表示要使用的
# 数据库名。如果数据库需要进行认证,username 和 password 表示数据库用户密令。
# 示例 hello.py:配置数据库
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 类的实例,表示程序使用的数据库,同时还获得了 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__ 定义在数据库中使用的表名。
# 如果没有定义 __tablename__,Flask-SQLAlchemy 会使用一个默认名字,
# 但默认的表名没有遵守使用复数形式进行命名的约定,
# 所以最好由我们自己来指定表名。其余的类变量都是该模型的属性,被定义为# db.Column
# 类的实例。
# db.Column 类构造函数的第一个参数是数据库列和模型属性的类型。
类型名 Python类型 说 明
Integer int 普通整数, 一般是 32 位
SmallInteger int 取值范围小的整数 一般是 16 位
BigInteger int 或 long 不限制精度的整数
Float float 浮点数
Numeric decimal.Decimal 定点数
String str 变长字符串
Text str 变长字符串,对较长或不限长度的字符串做了优化
Unicode unicode 变长 Unicode 字符串
UnicodeText unicode 对较长或不限长度的字符串做了优化
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,这列不允许出现重复的值
index 如果设为 True,为这列创建索引,提升查询效率
nullable 如果设为 True,这列允许使用空值;如果设为 False,这列不允许使用空值
default 为这列定义默认值
doc 字段说明
# Flask-SQLAlchemy 要求每个模型都要定义主键,这一列经常命名为 id。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。