使用Flask-SQLAlchemy来实现模型(Modle,即Class)与表(table)的映射 1、模型需要继承db.Model;映射到表中的属性(每列),必须写成‘db.Column()’的数据类型 2、数据类型: *'db.Integer'---整型 *'db.String'---varchar,需要指定最长的长度 *'db.Text'----text 3、其他参数 *'primary_key':字段设置为主键 *'autoincrement':主键为自增长的 *'nullable':是否可以为空,设置为False就代表不为空 4、最后需要调用db.create_all()来讲模型真正的创建到数据库中
例子如下:
config.py配置文件:
#encoding:utf-8 #dialect+driver://username:password@host:port/database DIALECT = 'mysql' DRIVER = 'mysqldb' USERNAME = 'root' PASSWORD = 'root' HOST = '127.0.0.1' PORT = '3306' DATABASE = 'db_demo1' #mysql 不会认识utf-8,而需要直接写成utf8 SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER, USERNAME,PASSWORD,HOST,PORT,DATABASE) SQLALCHEMY_TRACK_MODIFICATIONS = False
app入口文件:
#encoding:utf-8 from flask import Flask from flask_sqlalchemy import SQLAlchemy import config app = Flask(__name__) app.config.from_object(config) db = SQLAlchemy(app) # article表sql语句创建方式: # create table article( # id int primary key autoincrement , # title varchar(100) not null # content text not null # ) #用类来进行表的映射,一个类就是一个表,一个实例就是一条数据,一个变量属性就是一个字段 class article(db.Model): #一定要继承db.Model __tablename__ = 'article' #制定表明 id = db.column(db.Integer,primary_key = True,autoincrement = True) title = db.column(db.String(100),nullable = False) content = db.column(db.Text,nullable = False) db.create_all() #真正将Class与表进行映射
@app.route('/') def index(): return 'index' if __name__ == '__main__': app.run(debug=True)