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. 两小时学会使用dubbo(直接API、spring、注解、springboot)

    最近上新的项目中需要用到dubbo,于是我决定温故知新,决定分享一下Dubbo在各种环境下的使用方式,本篇文章让你两小时就能学会使用dubbo 什么是Dubbo Dubbo是一个分布式.高性能.透明化 ...

  2. 在 Exchange Server 中配置特定于客户端的消息大小限制

    在 Exchange Server 中配置特定于客户端的消息大小限制 微软官方详细文档如下: https://learn.microsoft.com/zh-cn/exchange/architectu ...

  3. Nuxt.js 应用中的 builder:generateApp 事件钩子详解

    title: Nuxt.js 应用中的 builder:generateApp 事件钩子详解 date: 2024/10/23 updated: 2024/10/23 author: cmdragon ...

  4. Oracle 数据泵 定时全库备份&&删除备份文件【注意点】

    一.概述 在给客户部署的数据泵备份&&删除过期备份脚本时,脚本删除部分未生效,导致存储空间占用非常大. 手动执行该删除命令时,执行成功: 最后发现需要增加 find.rm 等命令的PA ...

  5. cmd杀死占用端口号的Java进程

    下面列出两种杀死进程的方法: 1.根据jps查询.2.根据端口号查询进程. 最后根据进程id杀死进程(注意:进程id不等同于端口号) 根据jps查进程 jps命令,列出Java进程列表 根据进程id杀 ...

  6. 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-4-启动浏览器-基于Maven(详细教程)

    1.简介 上一篇文章,宏哥已经在搭建的java项目环境中添加jar包实践了如何启动浏览器,今天就在基于maven项目的环境中给小伙伴们或者童鞋们演示一下如何启动浏览器. 2.eclipse中新建mav ...

  7. 2023NOIP A层联测26 T2 competition

    2023NOIP A层联测26 T2 competition tjm 的做法,很抽象. 考场思路 考虑每道题被做过多少次肯定不现实,那么考虑每一道题有多少次没有做出来. 假设某一次可以做出来题 \(x ...

  8. 使用Ollama和Open WebUI管理本地开源大模型

    Open WebUI和Ollama介绍 Open WebUI 是一个功能丰富且用户友好的自托管 Web 用户界面(WebUI),它被设计用于与大型语言模型(LLMs)进行交互,特别是那些由 Ollam ...

  9. Spring + EHcache配置

    需要使用Spring来实现一个Cache简单的解决方案,具体需求如下:使用任意一个现有开源Cache Framework,要求可以Cache系统中Service或则DAO层的get/find等方法返回 ...

  10. Java Class 文件中Method的存储

    class文件是java编译后的文件类型.其代表一个类,其有专门的存储格式.其中会存放数据也会存放方法,而所谓的方法存放就是将方法中的调用都转换成java字节码指令.所方法调用从机器的角度看就是对于寄 ...