美文网首页MongoDB
python调用各种数据库

python调用各种数据库

作者: 丶君为红颜酔 | 来源:发表于2018-09-11 17:21 被阅读0次

    mongodb

    ## 安装
    pip install pymongo
    
    ## 使用
    from pymongo import MongoClient
    conn = MongoClient('192.168.0.113', 27017)
    db = conn.mydb  #连接mydb数据库,没有则自动创建
    my_set = db.test_set  #使用test_set集合,没有则自动创建
    
    ### 增
    db.COLLECTION_NAME.insert(document)
    
    ### 更新
    my_set.update(
       <query>,    #查询条件
       <update>,    #update的对象和一些更新的操作符
       {
         upsert: <boolean>,    #如果不存在update的记录,是否插入
         multi: <boolean>,        #可选,mongodb 默认是false,只更新找到的第一条记录
         writeConcern: <document>    #可选,抛出异常的级别。
       }
    )
    //删除
    my_set.remove(
       <query>,    #(可选)删除的文档的条件
       {
         justOne: <boolean>,    #(可选)如果设为 true 或 1,则只删除一个文档
         writeConcern: <document>    #(可选)抛出异常的级别
       }
    )
    
    //查
    my_set.find({"name":"zhangsan"}).sort([("age",1)])
    my_set.find({"age":{"$gt":25}}) //$lte
    my_set.find({"name":"zhangsan"}).skip(2).limit(6)
    my_set.find({"age":{"$in":(20,30,35)}})
    my_set.find({"$or":[{"age":20},{"age":35}]})
    my_set.find({'li':{'$all':[1,2,3,4]}})
    //数组
    my_set.update({'name':"lisi"}, {'$push':{'li':4}})
    for i in my_set.find({'name':"lisi"}):
        print(i)
    #输出:{'li': [1, 2, 3, 4], '_id': ObjectId('58c50d784fc9d44ad8f2e803'), 'age': 18, 'name': 'lisi'}
    
    my_set.update({'name':"lisi"}, {'$pushAll':{'li':[4,5]}})
    for i in my_set.find({'name':"lisi"}):
        print(i)
    #输出:{'li': [1, 2, 3, 4, 4, 5], 'name': 'lisi', 'age': 18, '_id': ObjectId('58c50d784fc9d44ad8f2e803')}
    
    #pop
    #移除最后一个元素(-1为移除第一个)
    my_set.update({'name':"lisi"}, {'$pop':{'li':1}})
    for i in my_set.find({'name':"lisi"}):
        print(i)
    #输出:{'_id': ObjectId('58c50d784fc9d44ad8f2e803'), 'age': 18, 'name': 'lisi', 'li': [1, 2, 3, 4, 4]}
    
    #pull (按值移除)
    #移除3
    my_set.update({'name':"lisi"}, {'$pop':{'li':3}})
    
    #pullAll (移除全部符合条件的)
    my_set.update({'name':"lisi"}, {'$pullAll':{'li':[1,2,3]}})
    for i in my_set.find({'name':"lisi"}):
        print(i)
    #输出:{'name': 'lisi', '_id': ObjectId('58c50d784fc9d44ad8f2e803'), 'li': [4, 4], 'age': 18}
    
    my_set.find_one({"contact.1.iphone":"222"})
    
    //多级对象
    my_set.find({"contact.iphone":"11223344"})
    
    
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    from pymongo import MongoClient
    
    settings = {
        "ip":'192.168.0.113',   #ip
        "port":27017,           #端口
        "db_name" : "mydb",    #数据库名字
        "set_name" : "test_set"   #集合名字
    }
    
    class MyMongoDB(object):
        def __init__(self):
            try:
                self.conn = MongoClient(settings["ip"], settings["port"])
            except Exception as e:
                print(e)
            self.db = self.conn[settings["db_name"]]
            self.my_set = self.db[settings["set_name"]]
    
        def insert(self,dic):
            print("inser...")
            self.my_set.insert(dic)
    
        def update(self,dic,newdic):
            print("update...")
            self.my_set.update(dic,newdic)
    
        def delete(self,dic):
            print("delete...")
            self.my_set.remove(dic)
    
        def dbfind(self,dic):
            print("find...")
            data = self.my_set.find(dic)
            for result in data:
                print(result["name"],result["age"])
    
    def main():
        dic={"name":"zhangsan","age":18}
        mongo = MyMongoDB()
        mongo.insert(dic)
        mongo.dbfind({"name":"zhangsan"})
    
        mongo.update({"name":"zhangsan"},{"$set":{"age":"25"}})
        mongo.dbfind({"name":"zhangsan"})
    
        mongo.delete({"name":"zhangsan"})
        mongo.dbfind({"name":"zhangsan"})
    
    if __name__ == "__main__":
        main()
    
    

    mysql

    pip3 install PyMySQL
    
    import pymysql
    db = pymysql.connect("localhost","testuser","test123","TESTDB" )
    cursor = db.cursor()
    
    ### 创建表
    cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
    sql = """CREATE TABLE EMPLOYEE (
             FIRST_NAME  CHAR(20) NOT NULL,
             LAST_NAME  CHAR(20),
             AGE INT,  
             SEX CHAR(1),
             INCOME FLOAT )"""
    cursor.execute(sql)
    db.close()
    
    ### 插入数据
    sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
             LAST_NAME, AGE, SEX, INCOME)
             VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
    try:
       # 执行sql语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
    except:
       # 如果发生错误则回滚
       db.rollback()
    # 关闭数据库连接
    db.close()
    
    ### 查询,cursor:
    fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
    fetchall(): 接收全部的返回结果行.
    rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
    
    

    redis

    pip3 install redis
    import redis 
    pool= redis.ConnectionPool(host='localhost',port=6379,decode_responses=True)
    r=redis.Redis(connection_pool=pool)
    r.set('apple','a')
    print(r.get('apple'))
    
    --
    redis中set()  ==>r.set()
    redis中setnx()  ==>r.set()
    redis中setex() ==>r.setex()
    redis中setbit()  ==>r.setbit()
    redis中mset()  == > r.mset()
    redis中hset()  ==>r.hset()
    redis中sadd() == >r.sadd()
    r.hset('info','name','lilei')
    r.hset('info','age','18')
    print(r.hgetall('info'))
    r.sadd('course','math','english','chinese')
    
    -- 管道代替事务
    pipe=r.pipeline()
    print(r.get('a'))
    try:
        # pipe.watch('a')
        pipe.multi()
        pipe.set('here', 'there')
        pipe.set('here1', 'there1')
        pipe.set('here2', 'there2')
        time.sleep(5)
        pipe.execute()
    except redis.exceptions.WatchError as e:
        print("Error")
    
    
    

    相关文章

      网友评论

        本文标题:python调用各种数据库

        本文链接:https://www.haomeiwen.com/subject/fwgugftx.html