python学习笔记(九):操作数据库

我们在写代码的时候,经常会操作数据库,增删改查,数据库有很多类型,关系型数据库和非关系数据库,这里咱们介绍一下python怎么操作mysql、redis和mongodb。

一、python操作mysql数据库 python3中操作mysql数据需要安装一个第三方模块,pymysql,使用pip install pymysql安装即可,在python2中是MySQLdb模块,在python3中没有MySQLdb模块了,所以使用pymysql。

    import pymysql
    # 创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集
    conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘123456‘, db=‘data‘,charset=‘utf8‘)
    # 创建游标
    cursor = conn.cursor()
    # 执行SQL,并返回收影响行数
    effect_row = cursor.execute("update students set name = ‘niuhy‘ where id = 1;")
    # 执行SQL,并返回受影响行数
    #effect_row = cursor.execute("update students set name = ‘niuhy‘ where id = %s;", (1,))
    # 执行SQL,并返回受影响行数
    effect_row = cursor.executemany("insert into students (name,age) values (%s,%s); ", [("andashu",18),("12345",20)])
    #执行select语句
    cursor.execute("select * from students;")
    #获取查询结果的第一条数据,返回的是一个元组
    row_1 = cursor.fetchone()
    # 获取前n行数据
    row_2 = cursor.fetchmany(3)
    # 获取所有数据
    row_3 = cursor.fetchall()
    # 提交,不然无法保存新建或者修改的数据
    conn.commit()
    # 获取最新自增ID
    new_id = cursor.lastrowid
    print(new_id)
    # 关闭游标
    cursor.close()
    # 关闭连接
    conn.close()
    上面的操作,获取到的返回结果都是元组,如果想获取到的结果是一个字典类型的话,可以使用下面这样的操作

    import pymysql
    # 创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集
    conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘123456‘, db=‘data‘,charset=‘utf8‘)
    # 创建游标
    cursor = conn.cursor()

    cursor = coon.cursor(cursor=pymysql.cursors.DictCursor)#需要指定游标的类型,字典类型
    # 执行SQL
    cursor.execute("select * from user;")
    #获取返回结果,这个时候返回结果是一个字典
    res = cursor.fetchone()#返回一条数据,如果结果是多条的话
    print(res)
    res2 = cursor.fetchall()#所有的数据一起返回

二、操作redis redis是一个nosql类型的数据库,数据都存在内存中,有很快的读写速度,python操作redis使用redis模块,pip安装即可

    import redis
    r = redis.Redis(host=‘127.0.0.1‘,port=6379,db=0)#指定连接redis的端口和ip以及哪个数据库
    r.set(‘name‘, ‘value‘)#set string类型的值
    r.setnx(‘name2‘, ‘value‘)#设置的name的值,如果name不存在的时候才会设置
    r.setex(‘name3‘, ‘value‘, 3)#设置的name的值,和超时时间,过了时间key就会自动失效
    r.mset(k1=‘v1‘,k2=‘v2‘)#批量设置值
    r.get(‘name‘)#获取值
    print(r.mget(‘k1‘,‘k2‘))#批量获取key

    r.delete(‘name‘)#删除值
    r.delete(‘k1‘,‘k2‘)#批量删除
    #======下面是操作哈希类型的
    r.hset(‘hname‘, ‘key‘, ‘value‘)#set 哈希类型的值
    r.hset(‘hname‘, ‘key1‘, ‘value2‘)#set 哈希类型的值
    r.hsetnx(‘hname‘,‘key2‘,‘value23‘)#给name为hname设置key和value,和上面的不同的是key不存在的时候
    #才会set
    r.hmset(‘hname‘,{‘k1‘:‘v1‘,‘k2‘:‘v2‘})#批量设置哈希类型的key和value
    r.hget(‘name‘, ‘key‘)#获取哈希类型的值
    print(r.hgetall(‘hname‘))#获取这个name里所有的key和value
    r.hdel(‘hname‘,‘key‘)#删除哈希类型的name里面指定的值
    print(r.keys())#获取所有的key

原文地址:https://www.cnblogs.com/hanzhao1987/p/8215509.html

时间: 2024-11-09 04:53:47

python学习笔记(九):操作数据库的相关文章

python学习笔记-day7-【python操作数据库】

上次说到了Python操作数据库,这里继续补充python操作数据库,如何获取数据表里的所有字段值以及将数据导出来到excel里,作为excel表表头. 一.上次说到封装一下mysql的操作 1.装一下函数执行数据库操作 #封装一下函数执行数据库操作def my_db(host,user, passwd, db,sql, port=3306, charset='utf8'): import pymysql conn = pymysql.connect(user=user,host=host,po

python学习笔记九——文件与目录

1.python进行文件读写的函数是open或file类 mode:r  只读 r+   读写 w  写入,先删除原文件,再重新写入,如果文件没有则创建 w+  读写,先删除原文件,再重新写入,如果文件没有则创建(可写入和输出) a  写入,在文件末尾追加新的内容,文件不存在则创建 a+  读写,在文件末尾追加新的内容,文件不存在则创建 b  打开二进制文件,可与r,w,a,+结合使用 U  支持所有的换行符号,"\r","\n","\r\n"

[Python] 学习笔记之MySQL数据库操作

1 Python标准数据库接口DB-API介绍 Python标准数据库接口为 Python DB-API,它为开发人员提供了数据库应用编程接口.Python DB-API支持很多种的数据库,你可以选择跟自己项目相关的数据库.Python DB-API支持的数据库如下所示: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase 不同的数据库你需要下载不同的DB API模块,例如

Python学习笔记21:数据库操作(sqlite3)

Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言. SQLite作为后端数据库,可以搭配Python建网站,或者制作有数据存储需求的工具. SQLite还在其它领域有广泛的应用,比如HTML5和移动端.Python标准库中的sqlite3提供该数据库的接口. 一 数据库设计 我将创建一个简单的关系型数据库,为一个书店存储书的分类和价格. 数据库中包含两个表:category用于记录分类,book用于记录某个书的信息. 一本书归属于某一个分类,因此book有一个外键(

python学习笔记文件操作(六)

1.文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 如下文件: 2017-03-24 11:25:06:349 - info: [debug] [AndroidBootstrap] Sending command to android: {"cmd":"shutdown"} 2017-03-24 11:25:06:355 - info: [debug] [AndroidBootstrap] Received command 

python学习笔记——列表操作

python列表操作--增 append:追加一条数据到列表的最后 name = ["Zhangsan","XiongDa","Lisi"] name.append("wangwu") print name 输出结果: ['Zhangsan', 'XiongDa', 'Lisi', 'wangwu'] insert:指定位置插入一条数据 name = ["Zhangsan","XiongDa&qu

python学习笔记(九) - IO编程

一. 文件读写: 1. 读文件: try: f = open('D:\\1.txt', 'r') # 读取普通文件 f = open('D:\\1.jpg', 'rb') # 读取二进制文件 f.read() finally: if f: f.close() with open('D:\\1.txt', 'r') as f: # 使用with会自动调用close for line in f.readlines(): # readlines可以读取一行 print(line.strip()) #

Python学习笔记——文件操作

python中,一切皆对象.   一.文件操作流程 (1)打开文件,得到一个文件句柄(对象),赋给一个对象: (2)通过文件句柄对文件进行操作: (3)关闭文件. 文件对象f通过open()函数来创建. open函数常用的三个参数:文件路径/名称.模式.encoding. 1 f = open('测试文件','r',encoding='utf-8') 2 print(f.read()) 3 f.close() 二.open函数中模式参数的常用值 值 描述 'r' 读模式 'w' 写模式 'a'

Python学习笔记九(UDP套接字和并发编程)

一.UDP套接字 服务端 from socket import * server = socket(AF_INET,SOCK_DGRAM) server.bind(("127.0.0.1",8080)) while True: data,client_addr = server.recvfrom(1024) server.sendto(data.upper(),client_addr) 客户端 from socket import * client = socket(AF_INET,S

Python学习笔记#列表操作常用的函数

列表操作常用的两类函数: 1. 添加元素: append extend insert append主要是在列表的尾部添加一个元素: a = [1,2,3,4,5] a.append(6) 将得到: a = [1, 2, 3, 4, 5, 6] extend主要是在列表的尾部添加一些元素,这些元素只能用列表的形式添加: 错误实例: >>> a.extend(6,7) Traceback (most recent call last): File "<pyshell#3>