Python数据库操作
Pymysql
说明
连接参数
pymysql的 connect 需要提供4个参数,可选2个参数
host, user, password, db, charset, cursorclass
地址,用户名,用户密码,数据库名,编码,游标
使用方法
conn = pymysql.connect(host, user, password, db, charset, cursorclass)
使用上下文管理器对游标进行管理,确保数据库指针被正确关闭回收资源
with conn.cursor() as cursor:
cursor.execute() # 用于执行 sql 语句
cursor.commit() # 对数据库的修改要 commit 才能提交确定修改
常用函数说明
***使用cursor游标进行调用 ***
fetchone():取返回数据的一个,从第一个开始,一个接一个,先1后2
fetchall():取出所有获取的数据
fetchmany():有参数size,获取指定size大小的数据,如2,则获取2个
execute():执行sql语句的函数
commit():execute执行后,需要commit提交事件修改到数据库
官方例程
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) COLLATE utf8_bin NOT NULL,
`password` varchar(255) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
AUTO_INCREMENT=1 ;
import pymysql.cursors
# Connect to the database
connection = pymysql.connect(host='localhost',
user='user',
password='passwd',
db='db',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
# Create a new record
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
# connection is not autocommit by default. So you must commit to save
# your changes.
connection.commit()
with connection.cursor() as cursor:
# Read a single record
sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
cursor.execute(sql, ('webmaster@python.org',))
result = cursor.fetchone()
print(result)
finally:
connection.close()
MongoDB
概念解析
SQL术语
MongoDB术语
解释
database
database
数据库
table
collection
数据库表
row
document
数据记录行
column
field
数据字段
index
index
索引
table joins
不支持
表连接
primary key
primary key
主键, MongoDB自动将_id字段设置为主键
创建数据库
语法
use DATABASE_NAME:创建数据库
show dbs:查看所有数据库
新创建的数据库不会立刻显示在数据库列表,需要往里面插入数据一些数据才会显示
在MongoDB 中默认的数据库为test,如果你没有创建新的数据库,集合将存放在test数据库中
删除数据库
先切换到该数据库,然后执行db.dropDatabase()
use DATABASE_NAME
db.dropDatabase()
命令db.dropDatabase()
删除集合
1.先切换数据库
2.显示所有表格show tables或show collections
3.选择相应的collections
4.db.collection_name.drop()
命令db.collection.drop()
> use DATABASE_NAME
switch to db DATABASE_NAME
> show tables
site
> db.site.drop()
true
> show tables
创建集合
命令db.createCollection(name, options)
options参数可选
注意:在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
删除集合
命令:db.collection.drop()
1.切换要删除集合所在的数据库
2.show collections查看全部集合
3.使用命令db.collection.drop()删除集合
注意:如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false。
插入文档
文档的数据结构和JSON基本一样。
所有存储在集合中的数据都是BSON格式。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
命令db.COLLECTION_NAME.insert(document)或db.COllECTION_NAME.save(document)
步骤
1.使用JSON数据格式表示存储的数据,如{'name':'yuyu}`,或许如以下代码一样,存储于变量
> document=({title: "练习",
... descr:"数据库",
... name:"yuge",
... url:"www.strongyu.top"});
{
"title" : "练习",
"descr" : "数据库",
"name" : "yuge",
"url" : "www.strongyu.top"
}
2.存储于相应的collection中,如:db.yuyu.insert({'name': 'yuyu'})或db.yuyu.save(document})
3.查看数据的命令db.col.find()--col 是 collection 的名字
更新文档
有两种方法
update()
save()
update()方法
注意
1.要指明更新数据的字段名字和数据
2.默认只更新一条数据,即如果有多条相同的数据,需要指定参数设置
save()方法
传入文档,根据ObjectId对原文档进行覆盖修改
删除文档
命令db.colllection.remove({query})
根据query的条件对collection的数据进行删除,满足query的则删除
删除collection全部数据,即db.collection.remove({}),即将query置空
查询文档
命令db.collection.find()
Pymongo
个人练习代码段
>>> from pymongo import MongoClient
>>> # 客户端连接,演示本地连接
...
>>> client = MongoClient("localhost", 27017)
>>>
>>> db = client.web
>>> # web是演示的数据库, db = client['web']
...
>>> data = {"author": "yuyuyu"
... , "text": "Hello MOngo",
... }
>>> db.yuyu.insert_one(data).inserted_id
ObjectId('5c5829aa0e059930be2e8bee')
# 已经插入,并返回了插入数据对应的 id 值
>>> import pprint
>>> pprint.pprint(db.yuyu.find_one())
>>> # find_one() 默认拿文档的第一条数据,也可以指定条件进行获取
>>> for data in db.yuyu.find():
... pprint.pprint(data)
...
{'_id': ObjectId('5c581717fbdb4fe8b28a4868'), '余伟': '喜欢写代码'}
{'123': 'abc', '_id': ObjectId('5c581892fbdb4fe8b28a486a')}
{'_id': ObjectId('5c5829aa0e059930be2e8bee'),
'author': 'yuyuyu',
'text': 'Hello MOngo'}
>>> # 使用 find() 方法遍历 yuyu 文档