3d云打印网站开发,天猫网站设计分析,兰州网站制作怎么样,多语网站wordpress子站点ORM模型 对象关系映射(Object Relationship Mapping)#xff0c;简称ORM#xff0c;是一种可以用Python面向对象的方式来操作关系型数据库的技术#xff0c;具有可以映射到数据库表能力的Python类我们称之为ORM模型。一个ORM模型与数据库中一个表相对应#xff0c;ORM模型中…ORM模型 对象关系映射(Object Relationship Mapping)简称ORM是一种可以用Python面向对象的方式来操作关系型数据库的技术具有可以映射到数据库表能力的Python类我们称之为ORM模型。一个ORM模型与数据库中一个表相对应ORM模型中的每个类属性分别对应表的每个字段ORM模型的每个实例对象对应表中每条记录。ORM技术提供了面向对象与SQL交互的桥梁让开发者用面向对象的方式操作数据库使用ORM模型具有以下优势。 (1)开发效率高几乎不需要写原生SQL语句使用纯Python的方式操作数据库大大的提高了开发效率。 (2)安全性高ORM模型底层代码对一些常见的安全问题比如SQL注入做了防护比直接使用SQL语句更加安全。 (3)灵活性强Flask-SQLAlchemy底层支持SQLite、MySQL、Oracle、PostgreSQL等关系型数据库但针对不同的数据库ORM模型代码几乎一模一样只需修改少量代 码即可完成底层数据库的更换。 下面我们用Flask-SQLAlchemy来创建一个User模型示例代码如下。
class User(db.Model):__tablename__ userid db.Column(db.Integer, primary_keyTrue, autoincrementTrue)username db.Column(db.String(100), nullableFalse)password db.Column(db.String(100), nullableFalse)with app.app_context(): # 请求应用上下文db.create_all() # 把所有的表同步到数据库中去
首先我们创建一个类名叫User并使得他继承自db.Model所有ORM模型必须是db.Model的直接或者间接子类。然后通过tablename属性指定User模型映射到数据库中表的名称.接着我们定义了三个db.Column类型的类属性分别是id、username、password,只有使用db.Column定义的类属性才会被映射到数据库表中成为字段。在这个User模型中id是db.Integer类型在数据库中将表现为整形并且传递primary_keyTrue参数来指定id作为主键传递autoincrement-True来设置id为自增长接下来的username和password我们分别指定其类型为db.String类型在数据库中将表现为varchar类型并且指定其最大长度为100。 app.py 完整代码
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import textapp Flask(__name__)# MySQL所在的主机名或域名
HOSTNAME 127.0.0.1
# MySQL监听的端口号默认3306
PORT 3306
# 连接MySQL的用户名,用自己的
USERNAME root
# 连接MySQL的密码,用自己的
PASSWORD ***
# MySQL上创建的数据库名称
DATABASE database_learnapp.config[SQLALCHEMY_DATABASE_URI] fmysqlpymysql://{USERNAME}:{PASSWORD}{HOSTNAME}:{PORT}/{DATABASE}?charsetutf8mb4# 在app.config中设置好连接数据库的信息
# 然后使用SQLAlchemy(app)创建一个db对象
# SQLAlchemy会自动读取app.config中连接数据库的信息
db SQLAlchemy(app)class User(db.Model):__tablename__ userid db.Column(db.Integer, primary_keyTrue, autoincrementTrue)username db.Column(db.String(100), nullableFalse)password db.Column(db.String(100), nullableFalse)with app.app_context(): # 请求应用上下文db.create_all() # 把所有的表同步到数据库中去app.route(/)
def hello_world():return Hello World!if __name__ __main__:app.run()先在 MySQL 中创建好数据库 database_learn 然后运行 app.py 此时在数据库中刷新就可以看到有 user 表被创建了出来点击设计表然后就能看到表的字段与类型了。