zoukankan      html  css  js  c++  java
  • python连接MySQL/redis/mongoDB数据库的简单整理

    python连接mysql

    用python操作mysql,你必须知道pymysql 
    代码示意:

    import pymysql
    conn = pymysql.connect(host='127.0.0.1', user='root', passwd='123', db='pydb', charset='utf8')
    print(conn)# <pymysql.connections.Connection object at 0x0000029B3F9B6470>
    打印出此信息说明python连接mysql成功。

    mysql的连接信息也可以放到一个字典里,connect()传参时传入字段。

    import pymysql
    sqlArgs={
        'host':'127.0.0.1',
        'port':3306,
        'user':'root',
        'passwd':'123',
        'db':'pydb',
        'charset':'utf8'
    }
    conn=pymysql.connect(**sqlArgs)
    print(conn)##<pymysql.connections.Connection object at 0x0000029B3F9B6470>

    自此mysql已经连上,接下来我们就开始简单操作数据库了(django中需要pymysql.install_as_MySQLdb())。

    操作数据库我们无非是对数据表进行增删改查。

    做这些之前必须要建立游标。

    cursor=conn.cursor()#建立游标
    row=cursor.execute('show databases')#execute()执行sql语句
    
    #通过fetch抓取游标里取出来的数据。
    data=cursor.fetchone()#取出一条数据
    datasmany=cursor.fetchmany(3)#取出3条数据
    datasall=cursor.fetchall()#全部取出
    #('information_schema',)
    #(('fruitstore',), ('intergratedplatform',))
    #(('mysql',), ('performance_schema',), ('sys',))
    #
    个人理解,从数据库查询的数据类似的存到游标里,取一条就少一条。

    查询,一个变量做where条件。

    row=cursor.execute('select * from product_info where category_id=%s',12)
    print('查询出%d条数据。'%row)#查询出5条数据。
    虽然category_id是数值,但是不能用%d匹配变量。

    查看execute()底层:其中的参数必有一个query(sql语句),还有一个参数args,这个是选传,可传单个,可传列表,也可传元组。

    传入多个条件(元组)
    row=cursor.execute('select * from product_info where category_id=%s AND product_price=%s',(12,20))
    print('查询出%d条数据。'%row)#查询出1条数据。
    传入多个条件(list)
    row=cursor.execute('select * from product_info where category_id=%s AND product_price=%s',[12,20])
    print('查询出%d条数据。'%row)#查询出1条数据。

    新增数据

    单条新增:
    row=cursor.execute('insert into sign(openid) VALUES (%s)','86777777775')
    conn.commit()#千万记得commit下,不然插入不到数据库。
    批量新增
    rows=cursor.executemany('insert into red_packet(openid,discount_id) VALUES (%s,%s)',[('123',1),('345',2),('678',3)])
    conn.commit()

    最后记得要关闭cursor和conn

    cursor.close()
    conn.close()

    完整规范示例:

    try:
        rows=cursor.executemany('insert into red_packet(openid,discount_id) VALUES (%s,%s)',[('123',1),('345',2),('678',3)])
        conn.commit()
    except :
        conn.rollback()
    finally:
        cursor.close()
        conn.close()

    python连接redis

    连接方式和mysql的很像。

    import redis
    redisArgs={
        'host':'129.43.73.197',
        'port':6379,
        'password':'123456',
    }
    re=redis.Redis(**redisArgs)
    print(re)#Redis<ConnectionPool<Connection<host=119.23.73.197,port=6379,db=0>>>

    操作redis

    re.set('name','徐繁韵')
    name=re.get('name')
    print(name.decode()) #徐繁韵
    
    re.mset(age=12,sex='男')
    datas=re.mget('age','sex')
    print(datas[1].decode())#男
    
    re.incr('age',10)
    print(re.get('age'))#b'22'
    re.incr('age')
    print(re.get('age')) #b'23'

    python连接mongodb

    import pymongo
    from pymongo import MongoClient
    client = MongoClient('139.13.73.197',27017)
    print(client) 
    #MongoClient(host=['129.33.73.197:27017'], document_class=dict, tz_aware=False, connect=True)

    此次撰写博客只是提及如何使用python连接数据库和简单的操作,后续复杂操作会尽快整理。 
    有任何疑问,尽情评论留言。

  • 相关阅读:
    SNF快速开发平台MVC-名片管理(实际名片样式)
    SNF快速开发平台MVC-表格单元格合并组件
    SNF快速开发平台MVC-单据状态水印
    SNF快速开发平台MVC-瀑布式分页组件
    SNF快速开发平台MVC-高级查询组件
    SNF快速开发平台MVC-自由排序组件
    SNF快速开发平台MVC-各种级联绑定方式,演示样例程序(包含表单和表格控件)
    SNF快速开发平台MVC-集成了百度开源项目echars
    SNF开发平台WinForm-平板拍照及扫描二维码功能
    SNF快速开发平台--规则引擎整体介绍及使用说明书
  • 原文地址:https://www.cnblogs.com/thinheader/p/9455972.html
Copyright © 2011-2022 走看看