Flask 系列之 SQLAlchemy
程序员文章站
2022-04-19 10:29:08
SQLAlchemy 是一种 ORM 框架,通过使用它,可以大大简化我们对数据库的操作,不用再写各种复杂的 了。 说明 操作系统:Windows 10 Python 版本:3.7x 虚拟环境管理器:virtualenv 代码编辑器:VS Code 实验目标 实现网站与 mysql 数据库的连接和 C ......
sqlalchemy 是一种 orm 框架,通过使用它,可以大大简化我们对数据库的操作,不用再写各种复杂的
sql语句
了。
说明
- 操作系统:windows 10
- python 版本:3.7x
- 虚拟环境管理器:virtualenv
- 代码编辑器:vs code
实验目标
实现网站与 mysql 数据库的连接和 crud 操作。
mysql 的安装与配置
打开 ubuntu 16.04 的 bash 界面,执行下述操作
# 安装 sudo apt update && sudo apt install mysql-server mysql-client sudo service mysql status # 配置安全性 sudo mysql_secure_installation sudo mysqladmin -p -u root version # 查看状态 sudo service mysql status sudo service mysql start sudo service mysql stop # 设置字符编码 sudo vim /etc/mysql/conf.d/mysql.cnf # 修改如下: [mysql] no-auto-rehash default-character-set=utf8 [mysqld] socket = /var/run/mysqld.sock port =3306 character-set-server=utf8 # 必须设置,否则会导致无法插入中文数据 # 重启服务 sudo service mysql restart
mysql 常用用法
# 进入 mysql mysql -u root -p # 查看当前字符编码 show variables like 'character%'; # 创建数据库 db_name create database db_name charset=utf8; # 显示以存在的所有数据库 show databases; # 指定数据库 db_name use db_name; # 创建数据库表 create table table_name; # 查看表信息 desc tablename; # 删除 数据库 db_name drop database db_name; # 退出 exit;
使用 sqlalchemy
首先进入 mysql 的控制台界面,创建我们需要使用的数据库
sudo mysql -u root -p create database todo; use todo;
安装 flask-sqlalchemy
pip install pymysql pip install flask-sqlalchemy
在 todolist
目录下创建 config.py 文件,示例代码如下所示:
import os basedir = os.path.abspath(os.path.dirname(__file__)) class config(object): sqlalchemy_database_uri = os.environ.get( 'sqlalchemy_database_uri') or 'mysql+pymysql://root:mysql@127.0.0.1:3306/todo' sqlalchemy_track_modifications = false
修改 todolist\app\__init__.py
,示例代码如下所示:
from flask import flask, render_template from flask_sqlalchemy import sqlalchemy from config import config app = flask(__name__) app.config.from_object(config) db = sqlalchemy(app) @app.route('/') @app.route('/index') def index(): title = 'home' greet = 'hello world' return render_template('index.html', title=title, greet=greet)
在 todolist
目录下创建 models.py 文件,示例代码如下所示:
from app import db from datetime import datetime class user(db.model): __tablename__ = 'users' # __table_args__ = {"useexisting": true} id = db.column(db.integer, primary_key=true) name = db.column(db.string(20), nullable=false, unique=true) email = db.column(db.string(120), nullable=false, unique=true) pwd = db.column(db.string(120), nullable=false) things = db.relationship('thing', backref='user', lazy='dynamic') def __repr__(self): return "<user %r>" % self.name class thing(db.model): __tablename__ = 'things' # __table_args__ = {"useexisting": true} id = db.column(db.integer, primary_key=true) user_id = db.column(db.integer, db.foreignkey('users.id')) title = db.column(db.string(20), nullable=false) text = db.column(db.text, nullable=false) add_date = db.column(db.datetime, default=datetime.now) def __repr__(self): return "<todo %r>" % self.id
修改 todolist\manage.py
,示例代码如下所示:
from app import app, db from models import user, thing from werkzeug.security import generate_password_hash if __name__ == "__main__": db.drop_all() db.create_all() pwd = generate_password_hash('123456789') u1 = user(name='admin', email='admin@outlook.com', pwd=pwd) db.session.add(u1) db.session.commit() t1 = thing(user_id=1, title='hello world', text='welcome to my hippiedom.') db.session.add(t1) db.session.commit() u2 = user.query.get(1) print(u2) app.run(debug=true, host='0.0.0.0', port=5000)
此时,执行 python manage.py
,若程序无数据库相关的错误信息,则表明数据库中相应表已经创建成功,我们可以在 mysql 的 shell 窗口进行查看。
参考
上一篇: linux查看硬件配置命令的方法示例
下一篇: 迷死人
推荐阅读
-
sql数据库学习系列四之SQL Server 索引和视图
-
springboot系列之03-使用IDEA完成第一个示例程序
-
深入理解JavaScript系列(29):设计模式之装饰者模式详解_javascript技巧
-
Python ORM框架SQLAlchemy学习笔记之数据查询实例
-
从零学python系列之数据处理编程实例(二)
-
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
-
Python ORM框架SQLAlchemy学习笔记之关系映射实例
-
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
-
老调重弹:JDBC系列之<驱动加载原理全面解析)
-
ASP.Net Core MVC基础系列之服务注册和管道