Python数据库 4.Python与数据库的交互

4.1Python与数据库的交互

在没有DB-API之前,各数据库之间的应用接口非常混乱,实现各不相同,如果项目需要更换数据库,基本上需要把所有和数据库相关的代码都进行改动,十分不方便

4.2DB-API

DB-API的出现就是为了解决这个问题,python 所有的数据库接口在一定程度上都要遵守python DB-API规范,它定义了一系列的操作数据库的方式,为各种数据库提供了一致的访问接口,项目中更换使用数据库变得更加方便。

4.3MySQL

开始创建connection获取cursor?执行查询执行命令获取数据处理数据?关闭cursor关闭connection结束

###################

conn = pymysql.connect(?    ‘user‘: ‘账号‘,    ‘password‘: ‘密码‘,    ‘db‘: ‘数据库名‘,    ‘charset‘: ‘utf8‘,   #不是utf-8)

#####################

db_config = {    ‘user‘: ‘账号‘,    ‘password‘: ‘密码‘,    ‘db‘: ‘数据库名‘,    ‘charset‘: ‘utf8‘,}conn = pymysql.connect(**db_config)

1.使用步骤

  • 1.导入模块:

    import pymysql

  • 2.建立连接:

    pymysql.connect(**dbconfig) 连接是不能操作数据库的,需要用连接生成游标来操作

  • 3.创建游标:

    connection.cursor()

  • 4.执行SQL语句:

    cursor.execute(sql) SQL语句都是通过这个方法执行

  • 5.获取结果:

    cur.fetchall()

  • 6.注意:

    在pymysql中执行的SQL语句不需要加 ;

    execute执行完后不是直接得到结果,需要你主动去获取

    和文件一样,别忘了关闭游标与连接

    事务的回滚和提交 rollbck 与commit

2.获取

print( cur .fetchone( )) #一行print( cur .fetchall( )) #全部  返回二维元组print( cur .fetchmany(3)) #  几条

3.with 语法 (默认将数据保存到库中)

with conn.cursor() as cur:    cur .execute( ‘select * from student‘)    print( cur .fetchone( )) #一行?conn.close()?########?with pymysql.connect(**mysql_ config) as cur:    cur .execute( ‘select * from student‘)    print( cur .fetchone( )) #一行    cur 此时为游标对象

4. 插入

with pymysql.connect(**mysql_ config) as cur:    cur .execute(         ‘insert into student values (6,"患者",16,22)‘        )

5. 事务 (pymysql 默认使用事务模式)

begin ; 开始事务rollback ; 回滚 (撤回)commit ;  保存 
开始之后 只有commit 才能保存的数据库中

rollback 是在提交之前可以回滚 commit 之前 写的都是在临时环境下

?    conn = pymysql. connect(**mysql_ config)        cur = conn.cursor( )        cur .execute(     ‘insert into student values (6,"患者",16,22)‘    )        conn.commit()    cur.close( )     conn.close()
优化: 插入多条数据:
?    conn = pymysql. connect(**mysql_ config)        with conn.cursor() as cur:        cur .execute(     ‘insert into student values (6,"患者",16,22)‘    )    conn.commit()??    with conn.cursor() as cur:        cur .execute(     ‘insert into student values (7,"7者",17,27)‘    )    conn.commit()    conn.close()

6.fetchone fetchall

数据过多时会一条一条显示 不会爆内存 如果直接 print(cur .fetchall()) 内存爆了

conn = pymysql. connect(**mysql_ config)?with conn.cursor() as cur:    cur .execute( ‘select * from student‘)?    row = cur .fetchone()

    while row:        print (‘Row‘:row)        row = cur .fetchone()

#################

?

    db_config = {        ‘user‘: ‘账号‘,        ‘password‘: ‘密码‘,        ‘db‘: ‘数据库名‘,        ‘charset‘: ‘utf8‘,    }?    conn = pymysql. connect(**db_config)

    cur = conn.cursor( )

    cur .execute( ‘select * from student‘)?    print( cur .fetchone( )) #一行    print( cur .fetchall( )) #全部  返回二维元组    print( cur .fetchmany(3)) #  几条?    cur.close( )     conn.close()??    #with conn.cursor() as cur:        #cur .execute( ‘select * from student‘)        #print( cur .fetchone( )) #一行?    #conn.close()??    #with pymysql.connect(**mysql_ config) as cur:        #cur .execute( ‘select * from student‘)        #print( cur .fetchone( )) #一行        #cur 此时为游标对象

##########################??    conn = pymysql. connect(**db_config) #连接pymysql

    cur = conn.cursor( ) #建立游标,利用游标来执行sq_语句

    try:        #执行sq1语句,不会返回结果,返回共影响的行数        executes = cur .execute( ‘select * from student‘)

        #获取结果        values = cur. fetchall()  

        for value in values :      #循环打印结果            print (value)

        #提交到数据片,自正把数据插入或者更新到数据白         conn. commit ()

    exvept Exceplion as e:

          print (e)

          #发生了异常,同滚          conn. rollback ()    finally:

          #在最后使用完关闭游标和连接#关闭游林

          cur. close()          conn. close()?

4.4. Redis

在python中操作redis的命令和命令行的用户几乎一模一样

  • 1.安装python包redis:

    pip install redis

  • 2.连接redis:

    redis.Redis() 为了兼容旧版本(不推荐使用)

  • 3.连接redis:

    Redis.StrictRedis()

  • 4.在程序操作的数据为bytes类型,加入decode_responses=True,写入的数据为str类型
import redis?conn = redis. StrictRedis( db=5)conn.set( ‘ name‘, ‘短视的‘)  #以二进制格式插入res=conn.get( ‘name‘)print(res)               # 二进制?print(res.decode(‘utf-8‘))  ?################?conn = redis. StrictRedis( db=5,decode_responses=True)res=conn.get( ‘name‘)print(res)   ?#连接远程数据库conn = redis. StrictRedis(host =‘‘,port=‘‘,db=5)
?

    import redis

    class RedisList(object):        def __init__(self,db=0,decode_responses=False):            self.conn=redis.StrictRedis(db=db,decode_responses=decode_responses)

        def push(self,key,*value,dire=‘r‘):            if dire==‘r‘:                self.conn.lpush(key,*value)            else:                self.conn.rpush(key,*value)

        def get(self,key,start_index,end_index=None):            if end_index:                return self.conn.lrange(key,start_index,end_index)            else:                return self.conn.lindex(key,start_index)

        def set(self,key,index,value):            self.conn.lset(key,index,value)

        def pop(self,key,value,dire=‘r‘):            if dire==‘r‘:                self.conn.lpop(key,value)            else:                self.conn.rpop(key,value)

    if __name__==‘__main__‘:        rlist=RedisList(db=1,decode_responses=True)        print(rlist.get(‘name‘,0,3))?????

原文地址:https://www.cnblogs.com/dyf25288-/p/11701592.html

时间: 2024-10-07 12:34:05

Python数据库 4.Python与数据库的交互的相关文章

Python使用DB-API操作MySQL数据库

Python提供了一个标准数据库API,称为DB-API,用于处理基于SQL的数据库.与任何底层数据库的交互都可以使用DB-API,因为DB-API在代码与驱动程序之间提供了一个抽象层,可以根据需要替换底层数据库,而无需丢弃现有的代码. DB-API与底层数据库交互示例:①代码 ? ②使用DB-API ? ③数据库驱动程序 ? ④底层数据库(如MySQL等) 使用DB-API操作MySQL数据库例子1.Windows安装MySQL数据库驱动程序MySQL-Connector/Python 访问M

Python入门学习教程:数据库操作,连接MySql数据库

各位志同道合的同仁可以点击上方关注↑↑↑↑↑↑ 本教程致力于程序员快速掌握Python语言编程. 本文章内容是基于上次课程Python教程:Python教程:连接数据库,对数据进行增删改查操作 和python基础知识之上进行的.如想学习python基础请移步:Python开发实战系列教程-链接汇总,持续更新. 数据库增删改查操作. 我们打开Navicat 创建一个数据库Manager,并且创建一个数据表:Student 并添加初始化数据: 传统方式进行增删改查: 传统方式进行数据库的连接,可以使

[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如何用sqlalchemy操作数据库

工具:mysql  python sqlalchemy ---------------------------------------- 准备工作: 1.安装mysql 如果是window环境请参考 win7安装mysql 如果是linux环境请参考 --稍后补充 2.安装python windows: win7安装python2和python3 linux: linux安装python36 linux python2.6.6以后的版本同样要通过源码包安装,看了下这位博主的这篇文章写的非常详细h

Python中通过cx_Oracle访问数据库遇到的问题总结

以下是Python中通过cx_Oracle操作数据库的过程中我所遇到的问题总结,感谢我们测试组的前辈朱勃给予的帮助最终解决了下列两个问题: 1)安装cx_Oracle会遇到的问题:在Windows下安装cx_Oracle不要尝试用pip install的方式了!下载官网的对应版本的msi安装文件,我的python2.7是32位的,oracle的instantClient也是32位的,这个cx_Oracle也选择32位的下载,安装成功后进入python模式下import cx_Oracle没问题,

python利用pymssql链接sqlserver数据库

1.引入pymssql包 import pymssql 2.建立连接: conn = pymssql.connect(server=conf['db_address'], port="1433",user=conf['db_username'], password=conf['db_password'], database=conf['db_name'], charset="UTF-8") cursor = conn.cursor() 3.执行SQL语句: curs

python基础教程总结12——数据库

1. Python 数据库 API 很多支持SQL标准的数据库在Python中都有对应的客户端模块.为了在提供相同功能(基本相同)的不同模块之间进行切换(兼容),Python 规定了一个标准的 DB API.目前API最新版本时 2.0, 1.1 全局变量 任何支持2.0版本的DB API的数据库模块都定义了3个描述模块特性的全局变量: apilevel 所使用的Python DB API版本 threadsafety 模块的线程安全级别 paramstyle 在SQL查询中使用的参数风格 1)

十二、Python高级功能之Mysql数据库模块

Python高级功能之Mysql数据库模块 安装python mysql组件 # yum -y install MySQL-python.x86_64 以下根据实例来说明: >>> import MySQLdb >>> conn = MySQLdb.connect(user='root',passwd='2wdc%RDX',host='localhost')  #连接数据库(到服务器的连接) >>> cur = conn.cursor()  # 创建游

python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API

python  Django教程  之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.py中配置即可,不用更改models.py中的代码,丰富的API极大的方便了使用. 本节的代码:(Django 1.6, Python 2.7 测试环境) 大

【Python】Windows平台下Python、Pydev连接Mysql数据库

Mysql数据库是跨平台的,不是说Python一定就要连接Mongodb. Python连接Mysql数据库是很简单的. 首先,你要配置好Python的开发环境,详见<[Python]Windows版本的Python开发环境的配置,Helloworld,Python中文问题,输入输出.条件.循环.数组.类>(点击打开链接),与Mysql的开发环境,详见<[Mysql]Mysql的安装.部署与图形化>(点击打开链接). 之后,打开Python的官网(点击打开链接),如下图,直接下载一