数据存储(数据库)

39 篇文章 3 订阅

更多爬虫实例请见 https://blog.csdn.net/weixin_39777626/article/details/81564819
在这里插入图片描述

连接

启动服务打开数据库Python连接数据库
MySQLsystemctl start mysqld.service mysqlconn = pymysql.connect(user='xx' ,passwd='xx', db='xx', charset='utf8')
cur=conn.cursor()
MongoDBsystemctl start mongodb.servicemongoclient=pymongo.MongoClient()
db=client.papers #获取数据库(papers是一个数据库)
Redissystemctl start redisredis-cli -h xx -p xx 方法一: con=redis.StrictRedis(host='xx',port=xx,db='xx')
方法二: con=redis.Redis(host='xx',port=xx,db='xx')
SQLite sqlite3 /home/as/test.dbcon=sqlite3.connect('/home/as/test.db')
cur=con.cursor()

查看

数据库列表数据表列表数据表内容
MySQLshow databases; show tables;select * from 数据表名;
MongoDBshow dbsshow collectionsdb.数据表名.find()
Redisconfig get databases以后再说吧现在没看明白
SQLite.databases.tablesselect * from 数据表名;

这里写图片描述

SQL语法

数据定义语言(DDL)

DDL语句含义
CREATE DATABASE创建数据库
DROP DATABASE修改数据库
CREATE TABLE创建新表
ALTER TABLE变更数据库表
DROP TABLE删除表
CREATE INDEX创建索引
DROP INDEX删除索引

SQL支持数据类型

数据类型含义
integer(size)
int(size)
smallint(size)
tinyint(size)
整数
decimal(size,d)
numeric(size,d)
小数
char(size)固定长度字符串
varchar(size)可变长度字符串
date(yyyymmdd)日期

数据操作语言(DML)

语法含义
SELECT查询数据库表中的数据
UPDATE更新数据库表中的数据
DELETE删除数据库表中的数据
INSERT INTO向数据表中插入数据

WHERE语句语法:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

运算符

运算符含义
=等于
<>不等于,有的数据库写为!=
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围内
LIKE按某种模式搜索

SQLite

增删改查操作

作用命令
创建数据库和表CREATE TABLE person(id integer primary key,name varchar(20),age integer);
增加INSERT INTO person(name,age) VALUES(‘qiye’,20);
修改UPDATE person SET age=17 WHERE name=‘qiye’;
查询SELECT*FROM person;
删除DELETE FROM person WHERE name=‘qiye’;

常用命令

作用命令
显示表结构.schema [table]
获取所有表和视图.tables
获取指定表的索引列表.indices [table]
导出数据库到SQL文件.output [filename]
.dump
.output stdout
从SQL文件导入数据库.read [filename]
格式化输出数据到CSV格式.output [filename.csv]
.separator,
select*from test;
.output stdout
从CSV文件导入数据到表中create table newtable (id integer primary key,name varchar(20),age integer);
.import [filename.csv] newtable
备份数据库sqlite3 test.db .dump>backup.sql
恢复数据库sqlite3 test.db<backup.sql

控制事物

命令作用
BEGIN TRANSACTION启动事务处理
COMMIT保存更改
ROLLBACK回滚更改

Python操作SQLite

数据库连接对象

方法作用
cursor()创建游标对象
commit()事务提交
rollback()事务回滚
close()关闭一个数据库连接

游标对象的使用

方法作用
execute()执行sql语句
executemany()执行多句sql语句
close()关闭游标
fetchone()选取一条记录,并指向下一条记录
fetchmany()选取多条记录
fetchall()选取所有记录
scroll()游标滚动
import sqlite3

#创建/打开数据库(指定路径)
con=sqlite3.connect('/home/as/test.db')
#创建/打开数据库(内存)
con=sqlite3.connect(':memory:')

#创建游标对象
cur=con.cursor()

#建表
cur.execute('CREATE TABLE person(id integer primary key,name varchar(20),age integer)')

#插入数据
cur.execute('INSERT INTO person VALUES (?,?,?)',(0,'qiye',20))
cur.executemany('INSERT INTO person VALUES (?,?,?)',[(3,'marry',20),(4,'jack',20)])
#提交操作
con.commit()
#出现错误——>回滚操作
con.rollback()

#查询数据
cur.execute('SELECT*FROM person')
res=cur.fetchall()
for line in res:
    print(line)
    
cur.execute('SELECT*FROM person')
res=cur.fetchone()
print(res)

#修改和删除数据
cur.execute('UPDATE person SET name=? WHERE id=?',('rose',1))
cur.execute('DELETE FROM person WHERE id=?',(0,))
con.commit()
con.close

MySQL

关键字

MySQL关键字含义
NULL数据列可包含NULL值
NOT NULL数据列不允许包含NULL值
DEFAULT默认值
PRIMARY KEY主键
AUTO_INCREMENT自动递增,适用于整数类型
UNSIGNED无符号,整型如果加了insigned,最大值会翻倍
CHARACTER SET name指定一个字符集

创建数据库与表

|命令|含义|示例|
|:—|:—|
|create database 数据库名[其他选项];|创建数据库|create database test character set gbk;|
|use 数据库名|选择数据库|use test;|
|create table 表名称(列声明1,列声明2,…)|创建表|create table student(id int unsigned not null auto_increment primary key,
name char(8) not null,sex char(4) not null,age tinyint unsigned not null);|

增删改查操作

作用命令
增加insert into student values (NULL,‘七夜’,‘男’,24);
修改update student set age=18 where name=‘七夜’;
查询select name,age from student;
删除delete from student where age=18;

表结构操作

表结构操作语法格式
添加列alter table student add address varchar(60) after age;
修改列alter table student change address addr char(60);
删除列alter table student drop addr;
重命名表alter table student rename students;

删除数据库和表

功能语法格式例子
删除表drop table 表名;drop table student;
删除数据库drop database 数据库名;drop database test;

常用命令

操作细分命令
连接MySQL本机
远程主机
mysql-u root-p;
mysql-h IP -u 用户名 -p 密码
修改密码加密码
改密码
mysqladmin -u 数据库 -password 密码
mysqladmin -u root -p 旧密码 -password 新密码
增加新用户grant 权限1,权限2,...权限n on 数据库名.表名 to 用户名@用户地址identified by'密码';
显示数据库mysql>show databases;
备份数据库导出整个数据库
导出一个表
mysqldump -u user_name -p123456 database_name>outfile_name.sql
mysqldump -u user_name -p123456 database_name table_name>outfile_name.sql
## Python操作MySQL

数据库连接对象

方法作用
cursor()创建游标对象
commit()事务提交
rollback()事务回滚
close()关闭一个数据库连接

游标对象的使用

方法作用
execute()执行sql语句
executemany()执行多句sql语句
close()关闭游标
fetchone()选取一条记录,并指向下一条记录
fetchmany()选取多条记录
fetchall()选取所有记录
scroll()游标滚动
import pymysql

#打开数据库
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='xxxxxx', db='test', charset='utf8')

#创建游标对象
cur=conn.cursor()

#建表
cur.execute('CREATE TABLE person (id int not null auto_increment primary key,name varchar(20),age int)')

#插入数据
cur.execute('INSERT INTO person (name,age) VALUES (%s,%s)',('qiye',20))
cur.executemany('INSERT INTO person (name,age) VALUES (%s,%s)',[('marry',20),('jack',20)])
#提交操作
conn.commit()
#出现错误——>回滚操作
conn.rollback()

#查询数据
cur.execute('SELECT*FROM person')
res=cur.fetchall()
for line in res:
    print(line)
    
cur.execute('SELECT*FROM person')
res=cur.fetchone()
print(res)

#修改和删除数据
cur.execute('UPDATE person SET name=%s WHERE id=%s',('rose',1))
cur.execute('DELETE FROM person WHERE id=%s',(1,))
conn.commit()
conn.close()

MongoDB

SQL&MongoDB

SQL概念MongoDB概念说明
databasedatabase数据库
tablecollection表/集合
rowdocument行/文档
columnfield字段列/域
indexindex索引
primary keyprimary key主键

数据库操作&文档操作

语法操作
use DATABASE_NAME创建数据库
db.dropDatabase()删除数据库
db.COLLECTION_NAME.insert(document)插入文档
db.COLLECTION_NAME.find()
db.COLLECTION_NAME.find().pretty()
集合中查找文档
易读方式读取文档
updatea()
save()
更新
remove()删除文档

条件语句和操作符(单条件)

这里写图片描述

条件语句和操作符(条件组合)

AND条件

db.COLLECTION_NAME.find({key1:value1,key2:value2}).pretty()

OR条件

这里写图片描述

import pymongo
import datetime

#建立连接
client=pymongo.MongoClient() #默认主机IP和端口
client=pymongo.MongoClient('localhost',27017) #指定主机IP和端口
client=pymongo.MongoClient('mongodb://localhost:27017') #URL格式连接

#获取数据库
db=client.papers
db=client['pa-pers']

# 获取集合
collection=db.books
collection=db['books']

#插入文档
book={
        "author":"Mike",
        "text":"My first book!",
        "tags":["爬虫","Python","网络"],
        "date":datetime.datetime.utcnow()
}
book_id=collection.insert(book)


books=[{
    "author":"Mike",
    "text":"My first book!",
    "tags":["爬虫","python","网络"],
    "date":datetime.datetime.utcnow()
},{
    "author":"As",
    "text":"My sec book!",
    "tags":["可视化","python","图表"],
    "date":datetime.datetime.utcnow()
}]
books_id=collection.insert(books)

#查询文档
#单个文档
collection.find_one({"author","As"})
#多个文档
for book in collection.find():
    print(book)
    
collection.find({"author":"As"}).count() #符合条件文档个数

#修改文档
collection.update({"author":"As"},{"$set":{"text":"python book"}})
#删除文档
collection.remove({"author":"As"})

更多爬虫实例请见 https://blog.csdn.net/weixin_39777626/article/details/81564819

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值