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框架系列(二):安装、配置文件、增删改查相关推荐

  1. 通过flask实现web页面简单的增删改查

    通过flask实现web页面简单的增删改查 1.后台程序falsk_web01.py #coding:utf-8from flask import Flask,render_template,requ ...

  2. dept在Java里面_EmpDeptManager 在JavaEE环境下搭建三大框架体系实现员工的增删改查系统 Develop 261万源代码下载- www.pudn.com...

    文件名称: EmpDeptManager下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 39 KB 上传时间: 2016-07-08 下载次数: 0 提 供 者 ...

  3. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查

    JS组件系列--BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查 参考文章: (1)JS组件系列--BootstrapTable+Kno ...

  4. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一)

    JS组件系列--BootstrapTable+KnockoutJS实现增删改查解决方案(一) 参考文章: (1)JS组件系列--BootstrapTable+KnockoutJS实现增删改查解决方案( ...

  5. codeigniter mysql_CI框架(CodeIgniter)实现的数据库增删改查操作总结

    本文实例讲述了CI框架(CodeIgniter)实现的数据库增删改查操作.分享给大家供大家参考,具体如下: controllers下的 cquery.php文件 class CQuery extend ...

  6. Python列表及其基本的操作(增删改查)

    Python列表及其基本的操作(增删改查) 增 1.insert() 2.append() 3.extend() 删 1.del() 2.pop() 2.1pop() 2.2pop(索引) 3.rem ...

  7. 【学习笔记】mongoDB初步(一)MongoDB的安装和增删改查基本语法,使用和命令

    MongoDB适合储存大量关联性不强的数据. MongoDB中的数据以"库"-"集合"-"文档"-"字段"结构进行储 存 ...

  8. Django框架(三)—— orm增删改查、Django生命周期

    orm增删改查.Django生命周期 一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 ...

  9. Python面向对象编程案例:封装数据库增删改查操作

    问题描述:编写一个类,封装对SQLite数据库的增删改查操作,使得数据库操作更加友好,类的使用者不需要了解SQL语句的语法规则,只需要了解类的接口即可. 思考下面的问题,尝试着写一写,然后到达文末查看 ...

  10. Django框架(三)-- orm增删改查、Django生命周期

    一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 开发效率高 缺点: SQL的效率低 ...

最新文章

  1. LINQ To DataSet 几个常用示例
  2. retrofit2 spring接受参数_Spring面试中有可能遇到的问题
  3. 【深度学习】图像去噪:一种基于流的图像去噪神经网络
  4. 这是我见过最好的Flash知识介绍了!
  5. 分类器构筑_为组织构筑基于区块链的未来做准备
  6. 最课程阶段大作业之01:使用SVN实现版本控制
  7. k8s自定义指标HPA实践(微服务基于自定义指标自动扩缩容的实践)附demo
  8. 成为一名PHP专家其实并不难
  9. 考软件测试初学者眼影,Summer 大讲堂第一期:如何制作出版级的高分辨率图表?...
  10. 内存问题分析工具_valgrind之memcheck基本使用
  11. java 既不是内部命令也不是外部命令的解决办法
  12. 2022上海Java工资收入概览
  13. Android Q Default Ringtone 客制化SKUID默认来电铃声/通知铃声配置
  14. 《游戏大师Chris Crawford谈互动叙事》一第 6 章 数学之苦劳
  15. ARP报文抓包解析学习
  16. Oracle环境变量配置
  17. 不背字根学五笔视频教程
  18. 通讯录——C语言实现
  19. MFC隐藏主窗口运行的几种方法
  20. IDL的参数传递(五)

热门文章

  1. axios create拦截_Vue学习-axios
  2. 使用Docker安装Spark集群(带有HDFS)
  3. 超详细Ubuntu Linux安装配置 Tomcat
  4. 使用VS2013编译Lua5.3.2
  5. C++虚继承(一) --- vtordisp字段
  6. 3_3 ObserverMode 观察者模式
  7. 计算机网络 | 传输层 :UDP与TCP协议详解
  8. 用Python实现希尔排序
  9. 单元测试之关于JaCoCo和PowerMock冲突导致类覆盖率为0的问题
  10. 恕我直言,IDEA的Debug,你可能只用了10%