<强> Python数据库框架强>
<代码> # pip安装flask-sqlalchemy * * * * 数据库引擎URL MySQL MySQL://用户名:password@hostname/数据库 Postgres postgresql://用户名:password@hostname/数据库 SQLite (Unix) SQLite://///数据库/绝对路径 SQLite (Windows) SQLite:///c://数据库/绝对路径 #在这些URL中,主机名表示MySQL服务所在的主机,可以是本地主机(localhost), #也可以是远程服务器。数据库服务器上可以托管多个数据库,因此数据库表示要使用的 #数据库名。如果数据库需要进行认证,用户名和密码表示数据库用户密令。 代码>
<代码> #示例hello.py:配置数据库 从flask.ext。sqlalchemy进口sqlalchemy basedir=os.path.abspath (os.path.dirname (__file__)) 应用=瓶(__name__) app.config [' SQLALCHEMY_DATABASE_URI ']=\ sqlite:///+ os.path。加入(basedir data.sqlite) app.config [' SQLALCHEMY_COMMIT_ON_TEARDOWN ']=True db=SQLAlchemy(应用) #数据库对象是SQLAlchemy类的实例,表示程序使用的数据库,同时还获得了Flask-SQLAlchemy #提供的所有功能。代码>
<代码> #定义模型 代码>
<代码>示以5比2例你好。py:定义角色和用户模型 类角色(db.Model): __tablename__=敖巧? id=db.Column (db。整数,primary_key=True) name=db.Column (db.String(64),独特的=True) def __repr__(自我): 返回的% r> & lt;作用;% self.name 类用户(db.Model): __tablename__='用户的 id=db.Column (db。整数,primary_key=True) 用户名=db.Column (db.String(64),独特的=True,指数=True) def __repr__(自我): 返回的& lt;用户% r> % self.username #类变量__tablename__定义在数据库中使用的表名。 #如果没有定义__tablename__, Flask-SQLAlchemy会使用一个默认名字, #但默认的表名没有遵守使用复数形式进行命名的约定, #所以最好由我们自己来指定表名。其余的类变量都是该模型的属性,被定义为# db.Column #类的实例。 # db。列类构造函数的第一个参数是数据库列和模型属性的类型。代码>
<代码>类型名Python类型说明 整数int普通整数,一般是32位 SmallInteger int取值范围小的整数一般是16位 BigInteger int或长期不限制精度的整数 浮浮浮点数 数字的小数。十进制定点数 字符串str变长字符串 文本str变长字符串,对较长或不限长度的字符串做了优化 Unicode Unicode变长Unicode字符串 UnicodeText unicode对较长或不限长度的字符串做了优化 布尔bool布尔值 datetime日期。日日期期 datetime。时间时间 DateTime DateTime。datetime日期和时间 间隔datetime。timedelta时间间隔 Enum str一组字符串 PickleType任何Python对象自动使用泡菜序列化 LargeBinary str二进制文件代码>
<代码> #最常使用的SQLAlchemy列选项,也即约束条件 primary_key如果设为True,这列就是表的主键 独特的如果设为True,这列不允许出现重复的值 指数如果设为True,为这列创建索引,提升查询效率 nullable如果设为True,这列允许使用空值,如果设为False,这列不允许使用空值 默认为这列定义默认值 医生字段说明 # Flask-SQLAlchemy要求每个模型都要定义主键,这一列经常命名为id。代码>