【Python】Flask框架系列(二):安装、配置文件、增删改查
MySQL-python中间件的安装
打开这里链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/
这里32与64的选择不是看操作系统的位数,而是看python的位数。我下载的是下面这个。
下载编译后的 MySQL-python 包,然后进入包所在路径,pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl
包路径,就好了。
小结
。。。和下面一样的问题,pycharm里需要重新安装。而且安装的并不顺畅。报错如下:
error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27
解决方法:下载 VCForPython27.msi 。
地址: http://www.microsoft.com/en-us/download/confirmation.aspx?id=44266
(Microsoft Visual C++ Compiler for Python 2.7)
上面这个解决了,又遇到新问题。
虚拟环境和真实环境的问题。好像有三个环境,两个虚拟环境(在命令行中一个(flask-env)开头,一个(venv)开头),一个真实环境(没有任何东西开头),我一开始在(flask-env)开头的虚拟环境和真实环境中(使用命令行)安装了mysql-python模块,但是pycharm(file -> setting -> project interpreter)中找不到。后来分析觉得应该是环境的问题,即安装的环境和运行的环境不是同一个环境在默认的(venv)开头的环境中又安装了一遍,终于pycharm中可以看到了。
安装完工。
参考了下面的回答。
参考链接:https://zhidao.baidu.com/question/750631798599298972.html
Flask-SQLAlchemy的介绍与安装
安装:使用pip install flask-sqlalchemy
。安装过程大概要等待三分钟。安装之后,我这里pycharm检测不到,from flask_sqlalchemy import SQLAlchemy
这行报错,重启pycharm也不行,用以下方式解决:
在pycharm file -> setting -> project interpreter看看是否有flask-sqlalchemy,发现没有,就又点击加号,安装了一遍。就好了。
ORM举例
使用ORM思想的好处是:不需要自己实现sql语句,底层已经封装好了。
Flask-sqlalchemy的使用
做测试:打开http://127.0.0.1:5000/,看控制台有没有报错。
警告:(3719),“UTF 8”目前是字符集UTF8MB3的别名,在将来的版本中将被UTF8MB4替换。请考虑使用UTF8MB4,以便明确无误。“)
没有解决。不知道这个警告会不会影响后面。
config.py
# encoding: utf-8# dialect+driver://username:password@host:port/databse
DIALECT = 'mysql'
DRIVER = 'mysqldb'
USERNAME = 'root'
PASSWORD = '123456'
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'ssm'SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
SQLALCHEMY_TRACK_MODIFICATIONS = False
app.py
# encoding: utf-8from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import configapp = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)db.create_all()@app.route('/')
def index():return 'index'if __name__ == '__main__':app.run(debug=True)
SQLAlchemy模型与表映射——创建一个数据库表(不需要自己写sql语句)
示例:
app.py
# encoding: utf-8from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import configapp = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)db.create_all()class Article(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()@app.route('/')
def index():return 'index'if __name__ == '__main__':app.run(debug=True)
运行结果:新建了article表
增加一条数据
app.py
# encoding: utf-8from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import configapp = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)db.create_all()class Article(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()@app.route('/')
def index():# 增加article1 = Article(title='aaa', content='bbb')db.session.add(article1)# 事务提交db.session.commit()return '运行成功'if __name__ == '__main__':app.run(debug=True)
访问网页之后的执行效果
查询一条数据
表中已有数据如下
app.py
# encoding: utf-8from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import configapp = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)db.create_all()class Article(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()@app.route('/')
def index():# 增加# article1 = Article(title='aaa', content='bbb')# db.session.add(article1)# 事务提交# db.session.commit()# 查找# select *from article where article.title='aaa';# result = Article.query.filter(Article.title == 'aaa').all() #按条件查询result = Article.query.filter().all() # 查询全部print resultfor a in result:print a.titlereturn '运行成功'if __name__ == '__main__':app.run(debug=True)
执行后输出
[<Article 1>, <Article 2>, <Article 3>, <Article 4>, <Article 5>, <Article 6>]
aaa
bbb
ccc
vvv
eee
uuu
修改一条数据
app.py
# encoding: utf-8from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import configapp = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)db.create_all()class Article(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()@app.route('/')
def index():# 增加# article1 = Article(title='aaa', content='bbb')# db.session.add(article1)# 事务提交# db.session.commit()# 查找# select *from article where article.title='aaa';# result = Article.query.filter(Article.title == 'aaa').all() #按条件查询# result = Article.query.filter().all() # 查询全部# print result# for a in result:# print a.title# 修改# 1.先把要修改的数据查找出来article1 = Article.query.filter(Article.title == 'aaa').first()# 2.修改数据article1.title = 'newtitle'# 3.事务的提交db.session.commit()return '运行成功'if __name__ == '__main__':app.run(debug=True)
修改后
删除一条数据
运行前
运行后
app.py
# encoding: utf-8from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import configapp = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)db.create_all()class Article(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()@app.route('/')
def index():# 增加# article1 = Article(title='aaa', content='bbb')# db.session.add(article1)# 事务提交# db.session.commit()# 查找# select *from article where article.title='aaa';# result = Article.query.filter(Article.title == 'aaa').all() #按条件查询# result = Article.query.filter().all() # 查询全部# print result# for a in result:# print a.title# 修改# 1.先把要修改的数据查找出来# article1 = Article.query.filter(Article.title == 'aaa').first()# 2.修改数据# article1.title = 'newtitle'# 3.事务的提交# db.session.commit()# 删除# 1.把要删除的数据查找出来article1 = Article.query.filter(Article.title == 'bbb').first()# 2.把要删除的数据删除掉db.session.delete(article1)# 3.事务提交db.session.commit()return '运行成功'if __name__ == '__main__':app.run(debug=True)
Flask-Script的介绍与安装
需要新建manage.py文件(与Django类似)
示例1
运行方式
示例2:将子命令通过add_command('', )
引入到manage.py中
运行方式
- 这里的db对应的是manage.py第16行中的第一个参数名称db,而init / migrate相当于db的子命令,也就是从db_script.py中引入的子命令
分开models和解决循环引用
循环引用问题:如下,运行时会提示cannot import name Article
解决方式:
关于 from app import… 的理解:https://segmentfault.com/q/1010000004418410/a-1020000011273279
Flask-Migrate的介绍
python的self的理解
#!/usr/bin/python
# -*- coding: UTF-8 -*-class Employee:'所有员工的基类'empCount = 0def __init__(self, name, salary):self.name = nameself.salary = salaryEmployee.empCount += 1def displayCount(self):print "Total Employee %d" % Employee.empCountdef displayEmployee(self):print "Name : ", self.name, ", Salary: ", self.salary"创建 Employee 类的第一个对象"
emp1 = Employee("Zara", 2000)
"创建 Employee 类的第二个对象"
emp2 = Employee("Manni", 5000)
emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount
python的self就与c++、java的this相同,是实例的引用。self也可以换成其他名称。 只不过python的语法,需要把self放在类实例方法的第一个参数而已
示例
class Test:def prt(self):print(self)print(self.__class__)t = Test()
t.prt()
输出
<__main__.Test instance at 0x10d066878>
__main__.Test
Flask中的session和cookie
【Python】Flask框架系列(二):安装、配置文件、增删改查相关推荐
- 通过flask实现web页面简单的增删改查
通过flask实现web页面简单的增删改查 1.后台程序falsk_web01.py #coding:utf-8from flask import Flask,render_template,requ ...
- dept在Java里面_EmpDeptManager 在JavaEE环境下搭建三大框架体系实现员工的增删改查系统 Develop 261万源代码下载- www.pudn.com...
文件名称: EmpDeptManager下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 39 KB 上传时间: 2016-07-08 下载次数: 0 提 供 者 ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
JS组件系列--BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查 参考文章: (1)JS组件系列--BootstrapTable+Kno ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一)
JS组件系列--BootstrapTable+KnockoutJS实现增删改查解决方案(一) 参考文章: (1)JS组件系列--BootstrapTable+KnockoutJS实现增删改查解决方案( ...
- codeigniter mysql_CI框架(CodeIgniter)实现的数据库增删改查操作总结
本文实例讲述了CI框架(CodeIgniter)实现的数据库增删改查操作.分享给大家供大家参考,具体如下: controllers下的 cquery.php文件 class CQuery extend ...
- Python列表及其基本的操作(增删改查)
Python列表及其基本的操作(增删改查) 增 1.insert() 2.append() 3.extend() 删 1.del() 2.pop() 2.1pop() 2.2pop(索引) 3.rem ...
- 【学习笔记】mongoDB初步(一)MongoDB的安装和增删改查基本语法,使用和命令
MongoDB适合储存大量关联性不强的数据. MongoDB中的数据以"库"-"集合"-"文档"-"字段"结构进行储 存 ...
- Django框架(三)—— orm增删改查、Django生命周期
orm增删改查.Django生命周期 一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 ...
- Python面向对象编程案例:封装数据库增删改查操作
问题描述:编写一个类,封装对SQLite数据库的增删改查操作,使得数据库操作更加友好,类的使用者不需要了解SQL语句的语法规则,只需要了解类的接口即可. 思考下面的问题,尝试着写一写,然后到达文末查看 ...
- Django框架(三)-- orm增删改查、Django生命周期
一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 开发效率高 缺点: SQL的效率低 ...
最新文章
- LINQ To DataSet 几个常用示例
- retrofit2 spring接受参数_Spring面试中有可能遇到的问题
- 【深度学习】图像去噪:一种基于流的图像去噪神经网络
- 这是我见过最好的Flash知识介绍了!
- 分类器构筑_为组织构筑基于区块链的未来做准备
- 最课程阶段大作业之01:使用SVN实现版本控制
- k8s自定义指标HPA实践(微服务基于自定义指标自动扩缩容的实践)附demo
- 成为一名PHP专家其实并不难
- 考软件测试初学者眼影,Summer 大讲堂第一期:如何制作出版级的高分辨率图表?...
- 内存问题分析工具_valgrind之memcheck基本使用
- java 既不是内部命令也不是外部命令的解决办法
- 2022上海Java工资收入概览
- Android Q Default Ringtone 客制化SKUID默认来电铃声/通知铃声配置
- 《游戏大师Chris Crawford谈互动叙事》一第 6 章 数学之苦劳
- ARP报文抓包解析学习
- Oracle环境变量配置
- 不背字根学五笔视频教程
- 通讯录——C语言实现
- MFC隐藏主窗口运行的几种方法
- IDL的参数传递(五)
热门文章
- axios create拦截_Vue学习-axios
- 使用Docker安装Spark集群(带有HDFS)
- 超详细Ubuntu Linux安装配置 Tomcat
- 使用VS2013编译Lua5.3.2
- C++虚继承(一) --- vtordisp字段
- 3_3 ObserverMode 观察者模式
- 计算机网络 | 传输层 :UDP与TCP协议详解
- 用Python实现希尔排序
- 单元测试之关于JaCoCo和PowerMock冲突导致类覆盖率为0的问题
- 恕我直言,IDEA的Debug,你可能只用了10%