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后2fetchall()
:取出所有获取的数据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
根据菜鸟教程整理
1.概念解析
2.创建数据库
3.删除数据库
4.创建集合
5.删除集合
6.插入文档
7.更新文档
8.删除文档
9.查询文档
概念解析
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 文档