flask后台框架1.4(mysql配置+数据库增删改查)

mysql配置及问题

前面三份博客的笔记基本记录了所用到的基本操作,这里开始记录后台和数据库的交互,数据库我们用的是mysql然后的话mysql就不记录了因为很简单,要是没有安装学习的话,基本在网上找找学学就明白了,下面进入正题。

在flask中配置mysql前提是我们已经在mysql中创建了一个数据库来供给我们这个flask专门的database我们创建了db_demo1这个数据库。
在这里插入图片描述
然后对于mysql的要求就这么多,接着我们来到之前的 config 文件中对后台数据库的链接进行配置。

DIALECT = 'mysql'  # 数据库 mysql
DRIVER = 'pymysql' # 驱动 mysqldb
USERNAME = 'root'
PASSWORD = 'root'
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'db_demo1'

SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)

SQLALCHEMY_TRACK_MODIFICATIONS = False

之前在config中只配置了一个 debug=true就没有了,这是紧接着那个配置的,然后主要是倒数第二行那排声明了各种事宜,有一点需要注意pymysql需要另外再安装一下,在python2中用的是mysqldb,如果在3中使用的话可能会报错,基本已经在3中淘汰了。现在都用pymysql,其他的都是翻译过来的意思,根据自己电脑的设置配置一下就可以了。

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.session.commit()   # 提交所修改的内容很重要一定要加

这里我们创建了一个类对象在数据库中对应创建了一个table名字为article

  1. 列名用 db.Colunm()
  2. int用 db.Interger
  3. 主键用primary_key=True
  4. varchar用db.String(?)
  5. text用db.Text
  6. not null 用 nullable=False

重新启动之后进入一下首页后,到数据库中看一下表单是否创建成功
在这里插入图片描述

可以看到成功创建了规定的表单。

数据库增加记录操作,实例化一个对象然后记得commit一下就行了

article1 = Article(title='aaa',content='bbb')
db.session.add(article1)
db.session.commit()

第一行是实例化一个对象,然后对于这个对象,我们需要把它存到数据库,就利用 db.session.add方法就行了,后面的commit一定不能忘,如果用过git一般都知道。

查 利用Article中继承的query中的filter过滤器来查找两种方式

#方式一
result = Article.query.filter(Article.title == 'yyl').all()    
article2 = result[0]
#方式二
article2 = Article.query.filter(Article.title == 'yyl').first()

如果玩过爬虫,应该都清楚一般查找任何东西返回来的都是一个list表单,所以我们实际需要的值在表单里面,用索引或者直接用first方法就行了,实例化了article2之后随便处理都可以。

改操作,线找到,然后对于这个找到的直接修改 之后commit一下

article2 = Article.query.filter(Article.title == 'aaa).first()
article2.content = 'ccc'

因为找到数据库,就相当于是引用了那块内存,修改直接对其生效,相当于数据库中的更新操作。

删除操作 先查询到然后 调用db.session.delete

article1 = Article.query.filter(Article.id == 4)[0]
db.session.delete(article1)

很简单,不再说明。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值