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术语解释
databasedatabase数据库
tablecollection数据库表
rowdocument数据记录行
columnfield数据字段
indexindex索引
table joins不支持表连接
primary keyprimary 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参数可选

1525011-20190204202535087-1061500033.png

注意:在 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},或许如以下代码一样,**存储于变量** ```sql > 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()方法

1525011-20190204202506381-599096185.png

注意
1.要指明更新数据的字段名字和数据
2.默认只更新一条数据,即如果有多条相同的数据,需要指定参数设置

save()方法

1525011-20190204202517787-1556498218.png

传入文档,根据ObjectId对原文档进行覆盖修改

删除文档

命令db.colllection.remove({query})
根据query的条件对collection的数据进行删除,满足query的则删除
删除collection全部数据,即db.collection.remove({}),即将query置空

查询文档

命令db.collection.find()

1525011-20190204202423614-224269167.png

1525011-20190204202439406-310713450.png

1525011-20190204202444458-27219612.png

1525011-20190204202450402-1848464171.png


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 文档

转载于:https://www.cnblogs.com/yuzw/p/10352116.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值