1.数据库的基本操作

  创建数据库:使用“CREATE DATABASE 数据库名;”语句创建新的数据库

  查看数据库:使用“SHOW DATABASES;”语句查看所有数据库

  选择数据库:使用“USE 数据库名;”语句选择要进行操作的数据库

  删除数据库:使用“DROP DATABASES 数据库名;”语句删除数据库

2.数据表的基本操作

  创建表:使用“CREATE TABLE 表明(列名 数据类型[约束],...);”语句创建表

  查看表:使用“SHOW TABLES;”语句查看当前数据库中的所有表。

  查看表结构:使用“DESCRIBE 表名;”或“SHOW COLUMNS FROM 表名;”语句查看表结构

  删除表:使用“DROP TABLE 表名;”语句删除表

3.数据的基础操作

  插入数据:使用“INSERT INTO 表名(列名1,列明2,...)VALUES(值1,值2,...);”语句插入数据。

  查询数据:使用“SELECT 列名1,列名2,...FROM 表名 [WHERE 条件];”语句查询数据。可以使用“*”代替列名表示查询所有列。

  更新数据:使用“UPDATE 表名 SET 列名1 = 值1,列名2 = 值2,...[WHERE 条件];”数据更新数据

  删除数据:使用“DELETE FROM 表名 [WHERE 条件];”语句删除数据。如果不加WHERE条件,将删除表中的所有数据。

4. FLASK配置环境

  数据库创建 create database 数据库名 default charset utf8;

  from flask import Flask

  from flask_sqlalchemy import SQLAlchemy

  app = Flask(__name__)

  app.config['SQLALCHEMY_DATABASE_URI']='musql+pymysql://root:Zwh119811@127.0.0.1/数据库名'         #mysql+pymsql://root:密码@路由地址/数据库名

  app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False 9

  db=SQLAlchemy(app)

5.创建模型及flask数据表

  class Role(db.Model):
      '''角色表'''
      __tablename__='role'
      id=db.Column(db.Integer,primary_key=True)  #数字即int类型
      name=db.Column(db.String(32),unique=True)
 
  class User(db.Model):
      '''用户表'''
      __tablename__='user'
      id=db.Column(db.Integer,primary_key=True)  #默认自增长
      name = db.Column(db.String(128), unique=True)
      password=db.Column(db.String(128))
      #表关系  外键ForeignKey 用来关联到另外一张表
      role_id=db.Column(db.Integer,db.ForeignKey('role.id'))
 
  if __name__ =='__main__':

  with app.app_context():
         #清除所有表
          db.drop_all()
           #创建所有表

    db.drop_all()
     #创建对象,插入数据
          role1=Role(name='admin')
           # session记录到对象任务中
            db.session.add(role1)
           #提交任务
           db.session.commit()
         role2=Role(name='admin2')
           db.session.add(role2)
           db.session.commit()

     use1=User(name='里看',password='321',role_id=role1.id) #关联到第一个角色

     use2=User(name='luxun',password='321',role_id=role2.id) #关联到第二个角色

     db.session.add_all([use1,use2]

     db.session.commit()

  #class Role(db.Mode1):定义了一个名为Role的类,他继承db.Model。db.Model 是SQLAlchemy 提供的一个基类,用于定义数据库模型

  #__tablename__ = 'role':这是一个类属性,用于这个模型类在数据库中对应的表名。表名被设置为'role'。

  #id = db.Column(db.Integer, primary_key=True): 这行代码定义了一个名为 id 的列,其数据类型为整数(db.Integer),并且这个列被指定为主键(primary_key=True)。主键是表中每条记录的唯一标识符。

  #name = db.Column(db.String(32), unique=True): 这行代码定义了一个名为 name 的列,其数据类型为长度不超过32个字符的字符串(db.String(32))。unique=True 参数表示这个列的值在表中必须是唯一的,即不允许有两条记录具有相同的 name 值。

  #role_id = db.Column(db.Integer, db.ForeignKey('role.id')): 定义了一个名为 role_id 的列,其数据类型为整数,并且这个列被设置为外键,引用 role 表中的 id 列。这表示每个用户都与一个角色相关联,通过 role_id 来建立这种关系。同样,这里更正了原代码中的 db.Interger 为 db.Integer。

6.增删改查  
  class User(db.Model): #映射进入数据库内部  
      __tablename__ = "user_1"  #表名  
      id = db.Column(db.Integer, primary_key=True, autoincrement=True) #设置字段,且为主键,自主增长  
      #string在数据库中为varchar  
      username = db.Column(db.String(100), nullable=False) #设置用户名字段,为字符串类型,可设置长度,设置不可为空  
      password = db.Column(db.String(100), nullable=False) #设置密码字段,参数同上
    
  @app.route('/user/add') #增添数据  
  def user_add():  
      # 创建ORM对象,设计一条数据,包含数据库内的字段  
      user1 = User(username="admin", password="123")  
      user2 = User(username="admin", password="12345")  
      user3 = User(username="张三", password="abc")   
 
      #使用add_all(),方法一次性添加多个对象 但首先需要将它们放入一个列表中  
      # 如果只有一个,那就db.session.add(user1)
      users_to_add = [user1, user2, user3]   
      db.session.add_all(users_to_add)   #将ORM对象添加到db.session中
      
      #将db.session中的改变同步到数据库中,每一步对数据库进行操作都要有这个。  
      db.session.commit()  
      return "用户创建成功"  
 
  @app.route('/user/query') #查找数据  
  def query():  
  # 1.get查找,根据主键查找  
      #user = User.query.get(1)   查找到主键值为1的User对象(就是一行的数据
      #print(f"{user.id}:{user.username}:{user.password}")    
      #return "数据查找成功"  
    
  # 2.filter.by查找  
      users = User.query.filter_by(username="admin")
      #通过用户名来查找,查找所有为admin的用户,但不支持模糊搜索 
      for user in users:  
          print(user.username,user.password)   # 可以调用user内的全部字段  
      return "数据查找成功"  
    
  # User.query.all() 获取表中的全部的User数据,返回数据为列表类型    
  # .exists() 判断数据是否存在  
 
  @app.route('/user/update')  
  def update():  
      #查找得到其中的数据  
      user = User.query.filter_by(username="张三").first()
      # 不加first返回的是一个对象而不是一个实例  
      # 但所有删改都智能对某一个特定实例进行,所以必须要将实例从对象中取出
      user.password = "aaaaa"  # 更改user的数据
      db.session.commit()  #同步到数据库
      return "数据修改成功!"  
 
  @app.route('/user/delete')  
  def delete():  
      # 查找到对应的数据  
      user = User.query.filter_by(username="张三").first()  
      # db.session中删除对应数据  
      db.session.delete(user)  
      # 同步到数据库  
      db.session.commit()  
      return "数据删除成功!"

Python__FLASK__MySQL基础的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  10. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

随机推荐

  1. 7-11 leetcode 2619

    请你编写一段代码实现一个数组方法,使任何数组都可以调用 array.last() 方法,这个方法将返回数组最后一个元素.如果数组中没有元素,则返回 -1 . ps:this 环境变量的使用 ,this ...

  2. CNI 基准测试:Cilium 网络性能分析

    原文链接:https://cilium.io/blog/2021/05/11/cni-benchmark 作者:Thomas Graf 译者:罗煜.张亮,均来自KubeSphere 团队 Thomas ...

  3. 顶点着色网格转换为 UV 映射的纹理化网格

    简介 顶点着色是一种将颜色信息直接应用于网格顶点的简便方法.这种方式常用于生成式 3D 模型的构建,例如 InstantMesh.然而,大多数应用程序更偏好使用 UV 映射的纹理化网格. 本教程将介绍 ...

  4. 顺序结构程序设计(python)

    文章目录 1.python运算符 1.1 python算数运算 1.2python比较运算符 1.3 Python赋值运算符 1.4 python逻辑运算符 1.5 python成员运算符 1.6py ...

  5. Tony Bai · Go语言第一课 _个人笔记 04|初窥门径:一个Go程序的结构是怎样的?

    Tony Bai · Go语言第一课 _个人笔记 04|初窥门径:一个Go程序的结构是怎样的? 1.配置国内的Go模块的镜像 配置国内镜像代理(使用阿里云镜像) go env -w GOPROXY=h ...

  6. 13-1 c++拷贝控制:拷贝赋值与销毁

    定义一个类时,我们必须对它进行拷贝控制,即控制该类在进行拷贝.赋值.移动和销毁时要进行哪些操作 一个类通过五个特殊的成员函数进行拷贝控制 拷贝构造函数 拷贝赋值函数 移动构造函数 移动赋值函数 析构函 ...

  7. 2-5 C++ 类型别名与自动类型

    目录 2.5.1 类型别名(Type Alias) typedef using 2.5.2 auto类型说明符 基本说明 注意点 2.5.3 decltype类型说明符 基本说明 注意点 2.5.1 ...

  8. "(UE4Editor.exe中)处有未经处理的异常:0xC0000005:读取位置0x0000000000000000时发生访问冲突"报错情况+解决方法+原因分析

    报错情况:使用ue4.27 Slate编写Widget时想通过获取Worl(通过本地PlayerController获取)来实现"设置定时任务为在音乐结束后自动触发函数"的功能 p ...

  9. 13.Kubernetes核心技术Ingress

    Kubernetes核心技术Ingress 前言 原来我们需要将端口号对外暴露,通过 ip + 端口号就可以进行访问 原来是使用Service中的NodePort来实现 在每个节点上都会启动端口 在访 ...

  10. 高性能计算-雅可比算法MPI通信优化(5)

    雅可比算法原理:如下图对方阵非边界元素求上下左右元素的均值,全部计算元素的数值计算完成后更新矩阵,进行下一次迭代. 测试目标:用MPI实现对8*8方阵雅可比算法迭代并行计算,用重复非阻塞的通信方式 # ...