Python数据库操作

Posted 一辈子有多长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python数据库操作相关的知识,希望对你有一定的参考价值。

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

根据菜鸟教程整理
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 tablesshow 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 文档

以上是关于Python数据库操作的主要内容,如果未能解决你的问题,请参考以下文章

[未解决问题记录]python asyncio+aiohttp出现Exception ignored:RuntimeError('Event loop is closed')(代码片段

常用python日期日志获取内容循环的代码片段

python 有用的Python代码片段

Python 向 Postman 请求代码片段

Python - 循环加速 - 大型数据集

VSCode自定义代码片段——git命令操作一个完整流程