SQLyog数据库的使用

xiaoxiao2021-03-01  2

django

web database 数据库 linux nginx web的集群

打开网页的方式

采用本地的文件路径协议找到的liweiwei.html文件

file:///F:/djangostart/templates/liweiwei.html 这种没有发送HTTP请求,也没有http响应

采用URL的方式

http://127.0.0.1:8000/liweiwei/ ---》django 发送HTTP请求,也有http响应

django自带的web服务,功能有限。 开发人员的测试使用web功能,—》Apache、nginx

MySQL数据库

MariaDB 是MySQL数据库的分支,和MySQL使用非常相似

Maria是MySQL创始人女儿的名字

1.创建表和库 2.基本的语句(select、insert、update、delete) 3.SQLyog的使用 4.pymysql库的使用 http://www.runoob.com/python3/python3-mysql.html 5.django里的ORM对数据库的操作 http://www.runoob.com/django/django-model.html

安装Mariadb

1.安装软件 [root@localhost ~]# yum install mariadb mariadb-server mariadb 是客户端使用Mariadb的软件,例如mysql mariadb-server 是提供数据库服务的软件。 2.启动 [root@localhost ~]# service mariadb start 启动mariadb服务 Redirecting to /bin/systemctl start mariadb.service [root@localhost ~]# [root@localhost ~]# service nginx start 启动nginx服务 3.查看mariadb相关的进程 [root@localhost ~]# ps aux|grep mariadb ps aux 查看linux下的所有的进程的命令---》任务管理器 [root@localhost ~]# man ps 查看ps命令的使用手册 按q退出 quit grep 是过虑内容的命令 | 是管道符号,作用:就是将前面命令的输出送给后面的命令做为输入使用。中间人 [root@localhost ~]# ps aux|grep "nginx" root 11072 0.0 0.1 120796 2100 ? Ss 22:21 0:00 nginx: master process /usr/sbin/nginx nginx 11073 0.0 0.1 121184 3120 ? S 22:21 0:00 nginx: worker process root 11098 0.0 0.0 112704 968 pts/0 S+ 22:30 0:00 grep --color=auto nginx [root@localhost ~]#

安装lsof命令: 作用: 1.可以查看某个端口被哪个进程占用了 -i:80

2.哪个进程一共打开了多少个文件 ---》校招 [root@localhost ~]# yum install lsof -y 安装 [root@localhost ~]# lsof -i:80 查看80端口被哪个进程占用了 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 11072 root 6u IPv4 35464 0t0 TCP *:http (LISTEN) nginx 11072 root 7u IPv6 35465 0t0 TCP *:http (LISTEN) nginx 11073 nginx 6u IPv4 35464 0t0 TCP *:http (LISTEN) nginx 11073 nginx 7u IPv6 35465 0t0 TCP *:http (LISTEN) [root@localhost ~]# lsof -i:3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 11016 mysql 14u IPv4 35106 0t0 TCP *:mysql (LISTEN) [root@localhost ~]#

进程号: 端口号: [root@localhost ~]# lsof -p 11016 查看11060进程打开了哪些文件

登录mariadb

mysql是登录mariadb数据库的命令 -u 指定登录数据库的用户名 root也是mariadb数据库里的超级管理员 -p 指定密码 ,默认情况下没有密码,密码为空 [root@localhost ~]# mysql -uroot -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>quit 退出数据库

mariadb的基本操作

1.建库建表 什么是库? 库(database):是用来存放表的容器,一个库里可以存放很多的表 什么是表? 表(table) ,容器 ,也是用来装数据 列:字段 field 行:记录 record 行 row和列 column 操作数据库的语言:SQL语句 简介:结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 关系型数据库:mysql、mariadb、oracle 非关系型数据库:redis、MongoDB、memcached --->NOSQL key:value 字典 studentinfo = {"name":"cali","age":18}

查询有哪些库

MariaDB [(none)]> show databases; MariaDB [(none)]> create database django; MariaDB [(none)]> use django Database changed MariaDB [django]> MariaDB [django]> show tables; #查看库里有哪些表 Empty set (0.00 sec) MariaDB [django]>

创建一个表,里面有很多字段和指定的数据类型

MariaDB [django]> create table studentinfo(id int primary key,name varchar(20),sex varchar(6),age int,grade decimal(5,2) ,birthday date,phoneNO decimal(20) not null); Query OK, 0 rows affected (0.01 sec) MariaDB [django]> show tables; +------------------+ | Tables_in_django | +------------------+ | studentinfo | +------------------+ 1 row in set (0.00 sec) MariaDB [django]> MariaDB [django]> desc studentinfo; 查看表的结构 description +----------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(20) | YES | | NULL | | | sex | varchar(6) | YES | | NULL | | | age | int(11) | YES | | NULL | | | grade | decimal(5,2) | YES | | NULL | | | birthday | date | YES | | NULL | | | phoneNO | decimal(20,0) | NO | | NULL | | +----------+---------------+------+-----+---------+-------+ 7 rows in set (0.00 sec) MariaDB [django]>

插入数据

MariaDB [django]> insert into studentinfo(id,name,sex,age,grade,birthday,phoneNO) values (1,"cali","male",18,60.5,"1984-10-01",18908495097); Query OK, 1 row affected (0.00 sec) MariaDB [django]>

查询

MariaDB [django]> select * from studentinfo; +----+------+------+------+-------+------------+-------------+ | id | name | sex | age | grade | birthday | phoneNO | +----+------+------+------+-------+------------+-------------+ | 1 | cali | male | 18 | 60.50 | 1984-10-01 | 18908495097 | +----+------+------+------+-------+------------+-------------+ 1 row in set (0.00 sec) MariaDB [django]> 2.增删改差语句的使用 进程和进程之间通讯的问题 1.socket 槽 网络socket: ip + 端口号 127.0.0.1:8000 192.168.123.59:3306 不同机器上的不同进程之间的通讯 文件socket 本机上不同进程之间的通讯

插入多行数据

test1.save() -->django MariaDB [tang]> insert into ljj(id,name) values (2,"rose"),(3,"jack"); MariaDB [django]> insert into studentinfo(id,name,sex,age,grade,birthday,phoneNO) values (2,"rose","female",18,60.5,"1984-10-01",18808495097); Query OK, 1 row affected (0.00 sec) MariaDB [django]> select * from studentinfo; +----+------+--------+------+-------+------------+-------------+ | id | name | sex | age | grade | birthday | phoneNO | +----+------+--------+------+-------+------------+-------------+ | 1 | cali | male | 18 | 60.50 | 1984-10-01 | 18908495097 | | 2 | rose | female | 18 | 60.50 | 1984-10-01 | 18808495097 | +----+------+--------+------+-------+------------+-------------+ 2 rows in set (0.00 sec)

过滤条件 where后面的是条件

Test.objects.all() -->select * from studentinfo Test.objects.filter(id=1) -->select * from studentinfo where id=1 MariaDB [django]> select * from studentinfo where sex="female"; +----+------+--------+------+-------+------------+-------------+ | id | name | sex | age | grade | birthday | phoneNO | +----+------+--------+------+-------+------------+-------------+ | 2 | rose | female | 18 | 60.50 | 1984-10-01 | 18808495097 | +----+------+--------+------+-------+------------+-------------+ 1 row in set (0.00 sec) MariaDB [django]> MariaDB [django]> select * from studentinfo where id=2; +----+------+--------+------+-------+------------+-------------+ | id | name | sex | age | grade | birthday | phoneNO | +----+------+--------+------+-------+------------+-------------+ | 2 | rose | female | 18 | 60.50 | 1984-10-01 | 18808495097 | +----+------+--------+------+-------+------------+-------------+ 1 row in set (0.00 sec) MariaDB [django]> select * from studentinfo where name="rose"; +----+------+--------+------+-------+------------+-------------+ | id | name | sex | age | grade | birthday | phoneNO | +----+------+--------+------+-------+------------+-------------+ | 2 | rose | female | 18 | 60.50 | 1984-10-01 | 18808495097 | +----+------+--------+------+-------+------------+-------------+ 1 row in set (0.00 sec) MariaDB [django]>

select 指定部分字段

MariaDB [django]> select name,sex,phoneNO from studentinfo; +------+--------+-------------+ | name | sex | phoneNO | +------+--------+-------------+ | cali | male | 18908495097 | | rose | female | 1234566 | +------+--------+-------------+ 2 rows in set (0.00 sec) MariaDB [django]> select name from studentinfo; +------+ | name | +------+ | cali | | rose | +------+ 2 rows in set (0.00 sec) MariaDB [django]>

更新数据库里的数据

Test.objects.filter(id=1).update(name='Google') where条件非常重要,不接会修改所有的行的数据 接了where条件,就只是修改符合条件的行的数据 MariaDB [django]> update studentinfo set age=35 where id=1;

删除语句

Test.objects.filter(id=1).delete() MariaDB [django]> delete from studentinfo where id=2;

SQLyog使用

windows里连接数据库的工具。 需要到mysql(mariadb里授权一个用户能远程连接到数据库)

如何授权?

grant是授权的命令 ALL 表示所有的权限(SELECT INSERT UPDATE DELETE等) on django.* 在django这个数据库里的所有的表 * 通配符号(表示所有的表) 'cali'@'%' 表示cali这个用户可以从任何一台电脑连接到数据库 % 表示任何一台电脑的ip地址 identified by '123456' 设置密码为123456 MariaDB [(none)]> grant ALL on django.* to 'cali'@'%' identified by '123456'; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]>

注意关闭防火墙

[root@localhost ~]# iptables -F 清除防火墙规则

pymysql模块使用

是在python 3.0里连接到数据库里,操作数据库的。 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

安装pymysql模块

pip install pymysql

使用pymysql模块去数据库连接

import pymysql # 打开数据库连接 提供服务器的ip、用户名、密码、具体连接的库 db = pymysql.connect("192.168.123.59", "cali", "123456", "django") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询 cursor.execute("select * from studentinfo") # 使用 fetchall() 方法获取所有的数据. data = cursor.fetchall() print(data) # 关闭数据库连接 db.close()

增强版

import pymysql # 打开数据库连接 提供服务器的ip、用户名、密码、具体连接的库 db = pymysql.connect("192.168.123.59", "cali", "123456", "django") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询 # cursor.execute("select * from studentinfo") cursor.execute("select name from studentinfo") # 使用 fetchall() 方法获取所有的数据. data = cursor.fetchall() data2 = [] for i in data: print(i[0]) data2.append(i[0]) print(data2) # 关闭数据库连接 db.close()

练习:

1.要求用户输入内容:用户名、性别、分数等信息 2.往数据库里studentinfo表里插入多条数据 3.查询数据库是否有? 4.如何判断一个用户是否在studentinfo表里存在了?

扩展的练习

ajax实现后端的验证用户是否存在?

案例

db_test.py 里的代码

import pymysql from accept_info import info stuinfo = info() print(stuinfo,type(stuinfo)) # 打开数据库连接 提供服务器的ip、用户名、密码、具体连接的库 db = pymysql.connect("192.168.123.59", "cali", "123456", "django") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询 # cursor.execute("select * from studentinfo") sql = f"insert into studentinfo(id,name,sex,age,grade,birthday,phoneNO) VALUES " \ f"({stuinfo[0]},'{stuinfo[1]}','{stuinfo[2]}',{stuinfo[3]},{stuinfo[4]},'{stuinfo[5]}',{stuinfo[6]})" print(sql) # cursor.execute("select name from studentinfo") cursor.execute(sql) # 提交数据写入到数据库 对数据库里的数据进行修改、删除、插入都需要commit db.commit() # 使用 fetchall() 方法获取所有的数据. cursor.execute("select name from studentinfo") data = cursor.fetchall() data2 = [] for i in data: print(i[0]) data2.append(i[0]) print(data2) # 关闭数据库连接 db.close()

accept_info.py里的代码

def info(): id = int(input("请输入id:")) name = input("请输入name:") sex = input("请输入sex:") age = int(input("请输入age:")) grade = input("请输入grade:") birthday = input("请输入birthday:") phoneNO = int(input("请输入phoneNO:")) return id,name,sex,age,grade,birthday,phoneNO if __name__ == "__main__": info()
转载请注明原文地址: https://www.6miu.com/read-3850251.html

最新回复(0)