原创 Python学习之数据库操作 详细讲解

发布时间:2019-08-05 11:29:08 浏览 3801 来源:博学谷资讯 作者:照照

    我们都知道,Python数据库接口支持非常多的数据库,学习Python就不得不学习数据库操作。因此本文将详细为大家讲解Python数据库的两种操作,希望对大家有所帮助。

     

    Python数据库操作

     

    一、Mysql数据库:

     

    安装pymysql:

     

    pip install pymysql

     

    1、数据库连接对象 connect 的常用方法:

     

    cursor() # 创建一个游标对象

     

    commit() # 提交事务

     

    rollback() # 事务回滚

     

    close() # 关闭数据库连接

     

    2、游标对象 cursor 的常用方法:

     

    execute() # 执行SQL语句

     

    executemany() # 用来执行多天SQL语句

     

    close() # 用来关闭游标

     

    fetchone() # 用来从结果取出一条记录,并将游标指向下一条记录

     

    fetchall() # 从结果中取出所有记录

     

    scroll() # 用于游标滚动

     

    from myconn import myconn

     

    class Sql:

     

    def __init__(self,db=None):

     

    # 初始化连接数据库

     

    # self.conn = pymysql.connect(db=dataName, user="user", passwd="passwd", host="host",charset='utf8')

     

    # 这是我自己写的方法,平常的话,安装pymysql,用上面一句连接就可

     

    self.conn = myconn.get_conn(db) if db!=None else myconn.get_conn()

     

    def get_databases(self):

     

    ''' 获取所有数据库名 '''

     

    return self.getSqlData("show databases")

     

    def get_tables(self):

     

    ''' 获取所有表名 '''

     

    return self.getSqlData("show tables")

     

    def create_table(self,table):

     

    ''' 创建表 '''

     

    cur = self.conn.cursor()

     

    # id:无符号整数,主键,自增;name:字符串;age:无符号整数

     

    sql = """create table {} (id int unsigned primary key auto_increment name varchar(10),age int unsigned)""".format(table)

     

    cur.execute(sql)

     

    self.conn.commit()

     

    def

     

    insert_data(self,table):

     

    ''' 增加一条数据到数据表 '''

     

    cur = self.conn.cursor()

     

    sql = "insert into {}(name,age) values(%s,%s)"

     

    cur.execute(sql,('myName',80))

     

    self.conn.commit()

     

    def update_data(self,table):

     

    ''' 修改表中的数据 '''

     

    cur = self.conn.cursor()

     

    sql = "update {} set age=18 where name='myName'".format(table)

     

    cur.execute(sql)

     

    self.conn.commit()

     

    def select_data(self, table):

     

    ''' 从数据库表查询数据 '''

     

    cur = self.conn.cursor()

     

    sql = "select name,age from {}".format(table)

     

    cur.execute(sql)

     

    return cur.fetchall()

     

    def delete_data(self, table):

     

    ''' 从数据库表删除数据 '''

     

    cur = self.conn.cursor()

     

    sql = "delete from {} where name='myName'".format(table)

     

    cur.execute(sql)

     

    self.conn.commit()

     

    def get_fields(self,table):

     

    ''' 获取指定表的字段 '''

     

    cur = self.conn.cursor()

     

    sql = "SELECT * FROM {} LIMIT 1".format(table)

     

    cur.execute(sql)

     

    v = cur.description

     

    zds = [i[0] for i in v]

     

    self.conn.commit()

     

    return zds

     

    def unique(self,table,*fields):

     

    ''' 唯一设置

     

    table:表名,fields:字段名列表; '''

     

    cur = self.conn.cursor()

     

    if len(fields) == 1:

     

    sql = "ALTER TABLE {} ADD unique(".format(table)

     

    else:

     

    sql = "ALTER TABLE {} ADD UNIQUE KEY(".format(table)

     

    for i in fields:

     

    sql += i

     

    if i != fields[-1]:

     

    sql += ','

     

    else:

     

    sql += ')'

     

    try:

     

    cur.execute(sql)

     

    except Exception as exc:

     

    print(exc)

     

    else:

     

    self.conn.commit()

     

    def closeSql(self):

     

    ''' 关闭数据库连接 '''

     

    self.conn.close()

     

    二、MongoDB 数据库

     

    1,安装 mongodb:

     

    到MongoDB官网下载对应版本的安装包: https://www.mongodb.com/download-center?jmp=nav#community

     

    1,把MongoDB安装到C盘或者D盘都可以

     

    2,在C盘建立data\db文件夹作为数据文件的存储路径,建立data\log文件夹存储日志文件。

     

    3,安装服务:cmd 进入到MongoDB的bin目录,执行:mongod --dbpath "C:\data\db" ?--logpath "C:\data\log\log.txt" ?--install -serviceName "MongoDB"

     

    4,开启服务:net start MongoDB

     

    注:有时由于没有正常关闭MongoDB,导致开启服务失败,可尝试删除C:\data\db下的mongod.lock再开启服务

     

    mongod --dbpath "C:\data\db" ?--logpath "C:\data\log\log.txt" ?--install -serviceName "MongoDB" 

     

    2,安装 pymongo:

     

    pip install pymongo

     

    import pymongo

     

    import datetime

     

    class Mongodb:

     

    """ Python MangoDB 的简单操作 """

     

    def __init__(self):

     

    # 1、建立连接

     

    # client = pymongo.MongoClient('localhost',27017) # 第一种方法

     

    client = pymongo.MongoClient('mongodb://localhost:27017') # 第二种方法

     

    # 2、获取数据库

     

    # db = client.db_name # 第一种方法

     

    db = client['db_name'] # 第二种方法

     

    # 3、获取一个集合

     

    # self.collection = db.table # 第一种方法

     

    self.collection = db['table'] # 第二种方法

     

    def insert_data(self):

     

    ''' 插入文档 '''

     

    # name:姓名;age:年龄;datetime:存储时间

     

    user = {

     

    "name":"myName",

     

    "age":18,

     

    "datetime":datetime.datetime.utcnow()

     

    }

     

    # 插入后,如果文档内没有_id这个键值,则系统会自动添加_id;其中user可以是多个user组成的列表

     

    user_id = self.collection.insert(user)

     

    return user_id

     

    def find_one_data(self):

     

    ''' 查询一条文档 '''

     

    data = self.collection.find_one({"name":"myName"}) # 查询name为myName的

     

    return data

     

    def find_data(self):

     

    ''' 查询多个文档 '''

     

    # data = [d for d in self.collection.find()] # 查询所有

     

    data = [d for d in self.collection.find({"name":"myName"})] # 查询所有指定name的文档

     

    return data

     

    def find_limit_data(self):

     

    ''' 根据条件查询数据:

     

    MongoDB中条件操作符有:

     

    (>) 大于 - $gt

     

    (<) 小于 - $lt

     

    (>=) 大于等于 - $gte

     

    (<= ) 小于等于 - $lte '''

     

    data = self.collection.find({"age":{"$gt": 12}}) # 查询年龄大于12岁的

     

    return data

     

    def get_size(self):

     

    ''' 查询符合条件的文档条数 '''

     

    size = self.collection.find({"name":"myName"}).count()

     

    return size

     

    def get_names(self):

     

    ''' 查询所有 name 的值,不重复的。返回list '''

     

    names = self.collection.distinct('name')

     

    return names

     

    def update_data(self):

     

    ''' 修改文档 '''

     

    self.collection.update({"name":"myName"},{"$set":{"age":28}}) # 修改name为myName的年龄

     

    def delete_data(self):

     

    ''' 删除文档 '''

     

    self.collection.remove({"name":"myName"}) # 删除name为myName的文档

     

    以上就是Python数据库操作的详细讲解,还有对这个知识点不清楚的同学可以上博学谷官网在线学习,有讲师在线为大家答疑解惑哦!

    申请免费试学名额    

在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!

上一篇: 0基础Python数据分析入门学习 下一篇: 自学Python网站推荐 从入门到精通

相关推荐 更多

热门文章

  • 带有参数的装饰器怎么使用?
  • 闭包的作用是什么?闭包如何使用?
  • 闭包读取函数内部变量函数的基础知识分享
  • 35岁不是程序员职场中的绊脚石
  • 直播电商产品经理的职业前景怎么样?
  • 产品经理和研发多年互喷的原因在哪?
  • SaaS产品需求优先级如何定?
  • 征服色彩 设计师必知的色彩心理感应
  • 私域流量运营的核心技巧是什么?
  • Python在线学习可以吗?靠不靠谱?
  • 查看更多

扫描二维码,了解更多信息

博学谷二维码