• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python连接Postgres/Mysql/Mongo数据库基本操作大全

    Postgres/Mysql/Mongo是本人在工作中最常用到的数据库。现罗列了python操作这三种数据库的基本操作,只要掌握了基本的操作,再多加训练,其实可以应用的得心应手。

    1、连接PG库

    ## 导入psycopg2包
    import psycopg2
    ## 连接到一个给定的数据库
    conn = psycopg2.connect(database="zabbix", user="zabbix",password="zabbix", host="127.0.0.1", port="5432")
    ## 建立游标,用来执行数据库操作
    cursor = conn.cursor()
    
    ## 执行SQL命令
    #cursor.execute("CREATE TABLE test_conn(id int, name text)")
    #cursor.execute("INSERT INTO test_conn values(1,'haha')")
    
    ## 提交SQL命令
    #conn.commit()
    
    ## 执行SQL SELECT命令
    cursor.execute("select * from drules;")
    
    ## 获取SELECT返回的元组
    rows = cursor.fetchall()
    print('druleid|proxy_hostid|name|iprange| delay|nextcheck|status')
    for row in rows:
        #print(row)
        print(row[0],row[1],row[2],row[3],row[4],row[5])
    
    ## 关闭游标
    cursor.close()
    
    ## 关闭数据库连接
    conn.close()

    2、连接MySQL

    2.1 连接数据库

    连接数据库前,请先确认以下事项:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import MySQLdb
    
    # 打开数据库连接
    db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )
    
    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()
    
    # 使用execute方法执行SQL语句![在这里插入图片描述](https://img-blog.csdnimg.cn/cover1/237894441851158706.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,image_MjAyMDA3MTUxNjIxMDEzOC5wbmc=,size_16,color_FFFFFF,t_70,image/resize,m_lfit,w_962#pic_center)
    
    cursor.execute("SELECT VERSION()")
    
    # 使用 fetchone() 方法获取一条数据
    data = cursor.fetchone()
    
    print "Database version : %s " % data
    
    # 关闭数据库连接
    db.close()

    2.2 创建数据库和表

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import MySQLdb
    
    # 打开数据库连接
    db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )
    
    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()
    
    # 如果数据表已经存在使用 execute() 方法删除表。
    cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
    
    # 创建数据表SQL语句
    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()

    2.3 插入数据

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import MySQLdb
    
    # 打开数据库连接
    db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )
    
    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()
    
    # SQL 插入语句
    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:
       # Rollback in case there is any error
       db.rollback()
    
    # 关闭数据库连接
    db.close()
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import MySQLdb
    
    # 打开数据库连接
    db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )
    
    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()
    
    # SQL 插入语句
    sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
    
           LAST_NAME, AGE, SEX, INCOME) \
    
           VALUES (%s, %s, %s, %s, %s )" % \
    
           ('Mac', 'Mohan', 20, 'M', 2000)
    try:
       # 执行sql语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
    except:
       # 发生错误时回滚
       db.rollback()
    
    # 关闭数据库连接
    db.close()

    2.4 数据库查询操作

    Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import MySQLdb
    
    # 打开数据库连接
    db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )
    
    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()
    
    # SQL 查询语句
    sql = "SELECT * FROM EMPLOYEE \
    
           WHERE INCOME > %s" % (1000)
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 获取所有记录列表
       results = cursor.fetchall()
       for row in results:
          fname = row[0]
          lname = row[1]
          age = row[2]
          sex = row[3]
          income = row[4]
          # 打印结果
          print "fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \
    
                 (fname, lname, age, sex, income )
    except:
       print "Error: unable to fecth data"
    
    # 关闭数据库连接
    db.close()

    2.5 数据库更新操作

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import MySQLdb
    
    # 打开数据库连接
    db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )
    
    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()
    
    # SQL 更新语句
    sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
    except:
       # 发生错误时回滚
       db.rollback()
    
    # 关闭数据库连接
    db.close()

    2.6 删除数据操作

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import MySQLdb
    
    # 打开数据库连接
    db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )
    
    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()
    
    # SQL 删除语句
    sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 提交修改
       db.commit()
    except:
       # 发生错误时回滚
       db.rollback()
    
    # 关闭连接
    db.close()

    3、连接Mongo库

    3.1 判读库是否存在

    #!/usr/bin/python3
     
    import pymongo
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    dblist = myclient.list_database_names()
    # dblist = myclient.database_names() 
    if "runoobdb" in dblist:
      print("数据库已存在!")

    3.2 创建集合(表)

    #!/usr/bin/python3
    import pymongo
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    collist = mydb. list_collection_names()
    # collist = mydb.collection_names()
    if "sites" in collist:   # 判断 sites 集合是否存在
       print("集合已存在!")
    else:
       mycol = mydb["sites"]

    3.3 插入集合

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    mydict = { "name": "RUNOOB", "alexa": "10000", "url": "https://www.runoob.com" }
     
    x = mycol.insert_one(mydict) 
    print(x)
    print(x)

    3.4 返回 _id 字段

    insert_one() 方法返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id 值。

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['runoobdb']
    mycol = mydb["sites"]
     
    mydict = { "name": "Google", "alexa": "1", "url": "https://www.google.com" }
     
    x = mycol.insert_one(mydict)
    print(x.inserted_id)

    3.5 插入多个文档

    集合中插入多个文档使用 insert_many() 方法,该方法的第一参数是字典列表。

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    mylist = [
      { "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com" },
      { "name": "QQ", "alexa": "101", "url": "https://www.qq.com" },
      { "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com" },
      { "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com" },
      { "name": "Github", "alexa": "109", "url": "https://www.github.com" }
    ]
     
    x = mycol.insert_many(mylist)
     
    # 输出插入的所有文档对应的 _id 值
    print(x.inserted_ids)

    3.6 插入指定 _id 的多个文档

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["site2"]
     
    mylist = [
      { "_id": 1, "name": "RUNOOB", "cn_name": "菜鸟教程"},
      { "_id": 2, "name": "Google", "address": "Google 搜索"},
      { "_id": 3, "name": "Facebook", "address": "脸书"},
      { "_id": 4, "name": "Taobao", "address": "淘宝"},
      { "_id": 5, "name": "Zhihu", "address": "知乎"}
    ]
     
    x = mycol.insert_many(mylist)
     
    # 输出插入的所有文档对应的 _id 值
    print(x.inserted_ids)

    3.7 查询一条数据

    使用 find_one() 方法来查询集合中的一条数据。
    查询 sites 文档中的第一条数据:

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    x = mycol.find_one()
     
    print(x)

    3.8 查询集合中所有数据

    find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    for x in mycol.find():
      print(x)

    3.9 查询指定字段的数据

    可以使用 find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1。

    #!/usr/bin/python3
    import pymongo 
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    for x in mycol.find({},{ "_id": 0, "name": 1, "alexa": 1 }):
      print(x)

    除了 _id 你不能在一个对象中同时指定 0 和 1,如果你设置了一个字段为 0,则其他都为 1,反之亦然。

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    for x in mycol.find({},{ "alexa": 0 }):
      print(x)

    3.10 根据指定条件查询

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    myquery = { "name": "RUNOOB" }
     
    mydoc = mycol.find(myquery)
     
    for x in mydoc:
      print(x)

    3.11 高级查询

    以下实例用于读取 name 字段中第一个字母 ASCII 值大于 “H” 的数据,大于的修饰符条件为 {"$gt": “H”} :

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    myquery = { "name": { "$gt": "H" } }
     
    mydoc = mycol.find(myquery)
     
    for x in mydoc:
      print(x)

    3.12 使用正则表达式查询

    正则表达式修饰符只用于搜索字符串的字段。

    以下实例用于读取 name 字段中第一个字母为 “R” 的数据,正则表达式修饰符条件为 {"$regex": “^R”} :

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    myquery = { "name": { "$regex": "^R" } }
     
    mydoc = mycol.find(myquery)
     
    for x in mydoc:
      print(x)

    3.13 返回指定条数记录

    如果我们要对查询结果设置指定条数的记录可以使用 limit() 方法,该方法只接受一个数字参数。

    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    myresult = mycol.find().limit(3)
     
    # 输出结果
    for x in myresult:
      print(x)

    3.14 修改数据

    以在 MongoDB 中使用 update_one() 方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。

    如果查找到的匹配数据多于一条,则只会修改第一条。

    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    myquery = { "alexa": "10000" }
    newvalues = { "$set": { "alexa": "12345" } }
     
    mycol.update_one(myquery, newvalues)
     
    # 输出修改后的  "sites"  集合
    for x in mycol.find():
      print(x)

    update_one() 方法只能修匹配到的第一条记录,如果要修改所有匹配到的记录,可以使用 update_many()。
    以下实例将查找所有以 F 开头的 name 字段,并将匹配到所有记录的 alexa 字段修改为 123:

    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    myquery = { "name": { "$regex": "^F" } }
    newvalues = { "$set": { "alexa": "123" } }
     
    x = mycol.update_many(myquery, newvalues)
     
    print(x.modified_count, "文档已修改")

    3.15 排序

    sort() 方法可以指定升序或降序排序。
    sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。

    #!/usr/bin/python3
    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    mydoc = mycol.find().sort("alexa")
    for x in mydoc:
      print(x)

    3.16 删除数据

    使用 delete_one() 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据。

    #!/usr/bin/python3 
    import pymongo 
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    myquery = { "name": {"$regex": "^F"} }
    x = mycol.delete_many(myquery)
    print(x.deleted_count, "个文档已删除")

    删除多个文档

    delete_many() 方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。
    删除所有 name 字段中以 F 开头的文档:

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    x = mycol.delete_many({})
     
    print(x.deleted_count, "个文档已删除")

    3.17 删除集合中的所有文档

    delete_many() 方法如果传入的是一个空的查询对象,则会删除集合中的所有文档:

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    x = mycol.delete_many({})
     
    print(x.deleted_count, "个文档已删除")

    3.17 删除集合

    使用 drop() 方法来删除一个集合。
    以下实例删除了 customers 集合:

    #!/usr/bin/python3
     
    import pymongo
     
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["runoobdb"]
    mycol = mydb["sites"]
     
    mycol.drop()

    到此这篇关于Python连接Postgres/Mysql/Mongo数据库基本操作的文章就介绍到这了,更多相关Python连接数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 将Python脚本打包成MACOSAPP程序过程
    • [项目布局配置]Nosql与PythonWeb-Flask框架组合
    • Python使用signal定时结束AsyncIOScheduler任务的问题
    • python生成可执行exe控制Microsip自动填写号码并拨打功能
    • Python之os模块案例详解
    上一篇:5行Python代码实现一键批量扣图
    下一篇:python 字典和列表嵌套用法详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python连接Postgres/Mysql/Mongo数据库基本操作大全 Python,连接,Postgres,Mysql,Mongo,