nodejs调用mysql,nodejs防止sql注入

  nodejs调用mysql,nodejs防止sql注入

  对象关系映射(ORM)使用描述对象和数据库之间映射的元数据,将程序中的对象自动映射到关系数据库中的Python类-表。

  Python的类属性-字段

  python中的类对象——数据库表中的一段数据

  我们是面向对象的。当对象的信息发生变化时,需要将其保存在关系数据库中。程序员在自己的业务逻辑代码中混合了许多SQL语句来添加、读取、修改和删除相关数据。这些代码通常是重复的。

  ORM的出现起到了对象层和数据库层之间的桥梁作用。

  优点:提高我们的开发效率。

  开发者技术不同,大神写的sql优化很不错。

  缺点:受查询效率影响的关系数据库技能较低。

  姜戈台阶

  在用户面前显示页面

  1.打开浏览器,输入URL,然后启动请求。

  2)接受请求,根据内容

  -url设置为-以后浏览器输入的路径的URL(r index/))))))))))。

  https://127 . 0 . 0 . 1:8000/指数

  编写用户输入URL后调用的view-content definedex(request):

  returnrender(请求, index.html )).

  def函数名的第一个参数是request。

  Render返回模板(请求,html)

  3.mvtdjango命名为models.py的模块为我们提供了orm框架。

  因为有了这个框架,就不需要写各种sql语句了。

  Orm类-表属性对应-字段实例对象-一行数据

  属性当前选定的数据库支持的字段的类型。

  呈现窗体时使用的默认html控件

  在管理站点进行最小验证后,django将为表创建一个自动扩展的主键列。每个模型只能创建一个主键列。如果使用选项将属性设置为主键列,django将不再创建自动扩展的主键列。

  默认情况下,创建的主键列属性是id,可以用pk代替。的所有PK都拼写为主密钥。

  键入AutoField:自动增长的智能字段。通常不指定。如果没有指定,Django将自动创建一个属性名为id的自动增长属性。(必须输入参数primary_key=True。)

  布尔字段:布尔字段。该值为真或假。

  Nullbooleanfield:支持三个值:null、True和False。

  Charfield(max_length=字符长度):字符串。

  映射到数据库时的Varchar

  参数max_length表示最大字符数。

  TextField:一个大的文本字段。通常在超过4000个字符时使用。

  整数字段:整数。

  Decimalfield(max_digits=none,decimal_places=None):十进制浮点数。

  参数max_digits表示总位数。

  参数decimal_places表示小数点后的位数。

  浮点字段:浮点数。

  DateField[auto_now=False,auto_now_add=False]):日期。

  auto_now参数意味着每次保存对象时,该字段自动设置为当前时间。用于更改最后一次的时间戳,总是使用当前日期,默认值为false。

  auto_now_add参数表示第一次创建对象时自动设置当前时间,时间戳用于创建。这始终使用当前日期,默认值为false。

  参数auto_now_add和auto_now互斥,组合将导致错误。

  TimeField:时间,参数与DateField相同。

  DateTimeField:日期和时间,参数与DateField相同。

  上传文件字段。

  图像字段:检查由文件字段继承和上传的内容,以确保它是有效的图像。

  可选约束null:如果为true,则允许为null,默认值为False。

  空白:如果为真,该字段可以为空。默认值为False。

  相比之下,null是数据库范畴的概念,blank是表单验证的范畴。

  Db_column:字段的名称。如果未指定,将使用属性的名称。

  Db_index:如果该值为True,将在该字段中创建一个索引。默认值为False。

  默认值:默认值。

  Primary _ key:如果为true,该字段将成为模型的主键字段。默认值为False,通常用作自动字段的选项。

  Unique:如果为true,则该字段在表中必须具有唯一的值。默认值为

  错误.

  4.我们使用mysql而不是sqllite

  如何配置我们的mysql

  4.1 settings.py数据库数据库={

  默认:{

  引擎: django.db.backends.mysql ,#数据库类型

  NAME: test1 ,#数据库的名称,django不会直接为我们创建数据库。我们需要手动创建它。

  用户: root ,#数据库用户

  密码: 123456 ,#数据库密码

  主机: 127.0.0.1 ,

  端口: 3306 ,#端口号

  }

  }

  4.2我们需要安装一个python-mysql驱动程序pymysql。

  4.3我们需要将这个驱动程序添加到项目中。

  在项目下的__init__文件中:import pymysql

  pymysql.install_as_MySQLdb()

  5.设计python的类(表)并不意味着数据库里有这个表。

  5.1生成迁移文件pythonmanage.pymakemigrations。

  5.2执行迁移Python manage.pymigrate。

  与数据库同步,成功创建表,并插入数据。

  6.调查

  6.1查询ID=1=excat list=book info . objects . filetr(ID=1)的图书

  list=book info . objects . filetr(id _ _ exact=1)

  Mysql日志:

  配置:sudovi/etc/MySQL/MySQL . conf . d/mysqld . cn f

  然后执行sudo服务mysql重启。

  使用以下命令打开mysql日志文件。sudo tail-f/var/log/MySQL/MySQL . log

  查询1。准确的判断

  2.模糊查询-包含

  查询从指定的值开始。

  查询以指定的值结束

  3.空值查询- isnull(无论是否为空)

  4.范围查询-in(是否包含在范围内)

  5.比较查询- gt,gte,lt,lte:大于,大于等于,小于等于。

  6.日期查询-年、月、日、周_日、小时、分钟、秒:计算日期和时间类型的属性。

  f对象和q对象

  f对象用于查询两个属性的比较。

  逐个调用多个过滤器来表示逻辑和关系,与sql语句where部分的and关键字相同。

  如果需要实现逻辑or查询,需要使用Q()对象结合操作符,Q对象定义在django.db.models中

  函数聚合

  使用aggregate()筛选器调用聚合函数。聚合函数包括:Avg、Count、Max、Min、Sum,这些函数在django.db.models中定义

  aggregate的返回值是字典类型。

  通常,使用count时不使用aggregate()过滤器。

  请注意,count函数的返回值是一个数字。

  查询集

  返回的查询集的筛选如下:all():返回所有数据。

  Filter():返回符合条件的数据。

  Exclude():返回满足条件以外的数据,相当于sql语句where部分中的not关键字。

  Order_by():对结果进行排序。

  返回单个值的过滤器如下:get():返回满足条件的单个对象。

  Count():返回当前查询结果的总数。

  Aggregate():聚合并返回一个字典。

  确定某个查询集中是否有数据:

  Exists():确定查询集中是否有数据,如果有则返回True,如果没有则返回False。

  查询集的两个特点是懒执行:查询集创建时不会访问数据库,直到数据被调用后才会被访问。调用数据的情况包括迭代、序列化和与if共享。

  缓存:使用相同的查询集。第一次使用它时,您将查询数据库,然后缓存结果。当您再次使用这个查询集时,您将使用缓存的数据。

  受限查询集

  查询集可以被标记或切片,这相当于sql中的limit和offset子句。不支持负索引。

  分割查询集并返回新的查询集。查询不会立即执行。

nodejs调用mysql,nodejs防止sql注入