在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
我们都知道,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数据库操作的详细讲解,还有对这个知识点不清楚的同学可以上博学谷官网在线学习,有讲师在线为大家答疑解惑哦!
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
了解Python五大特性提高工作效率
Python作为近些年来新崛起的编程语言黑马,发展可以说是势如破竹,风头强劲。而随着Python一起升温的,还有全民学习Python的热度。虽说Python是新手友好的语言,但对于零基础的初学者而言,学习一门编程语言的难度并不低。为了帮助大家更好的掌握Python,本文将为大家总结归纳可以提高工作效率的Python五大特性,分别是列表操作、压缩和枚举、列表推导式、虚拟环境的使用和生成器。
4785
2020-01-11 19:26:10
学习Python后能找什么工作
想学习Python的小伙伴们,肯定听到非常多关于Python就业方向非常广泛的话题。那到底学习完成后,能够从事哪些方面的工作呢?具体相关Python的工作岗位有哪些呢?带着问题我们一起深入了解一下Python的就业前景。
5362
2020-05-15 18:02:44
Python if语句多层嵌套使用方法介绍
Python if语句多层嵌套使用方法介绍,if语句嵌套指的是if语句内部包含if语句,Python 中,if、if else 和 if elif else 之间可以相互嵌套。因此,在开发程序时,需要根据场景需要,选择合适的嵌套方案。需要注意的是,在相互嵌套时,一定要严格遵守不同级别代码块的缩进规范。
5418
2021-04-19 14:13:01
装饰器的作用及使用方法是什么?
装饰器的作用及使用方法是什么?外层函数返回里层函数的引用,里层函数引用外层函数的变量。装饰器在不改变已有函数源代码及调用方式的前提下对已有函数进行功能的扩展,通过我们需要学习掌握装饰器的作用及代码。
3200
2021-12-06 13:51:46
mkdir和rm命令选项基础知识学习分享
mkdir和rm命令选项基础知识学习分享,创建嵌套文件夹使用“mkdir –p”嵌套目录;删除空目录使用“rmdir目录名”或者“rm–d目录名”;删除非空目录使用 “rm–r目录名”
2511
2022-03-02 16:22:47