
主流的关系型数据库:
1 MySQL:目前使用最广泛的开源、多平台的关系型数据库,支持事务、符合ACID、支持多数SQL规范。
2 SQL Server:支持事务、符合ACID、支持多数SQL规范,属于商业软件,需要注意版权和licence授权费用。
3 Oracle:支持事务,符合关系型数据库原理,符合ACID,支持多数SQL规范,功能最强大、最复杂、市场占比最高的商业数据库。
4 Postgresql:开源、多平台、关系型数据库,功能最强大的开源数据库,需要Python环境,基于postgresql的time
scaleDB,是目前比较火的时序数据库之一。
非关系型数据库:
非关系型数据库也被称为nosql,作为关系型数据库的一个补充,能在特定场景和特点问题下发挥高效率和高性能。
常见的非关系型数据库类型有键值存储数据库和面向文档数据库。
键值存储数据库类似hash,通过key做添加、删除、查询、性能高,优势在于简单、易部署、高并发,主要产品有:
Redis:开源、Linux平台、key-value键值型nosql数据库,简单稳定,非常主流的、全数据in-momory,定位于快的键值型nosql数据库。
Memcaced:一个开源的、高性能的、具有分布式内存对象的缓存系统,通过它可以减轻数据库负载,加速动态的web应用。
面向文档数据库以文档的形式存储,每个文档是一系列数据项的集合,每个数据项有名称与对应的值,主要产品有:
MongoDB:开源、多平台、文档型nosql数据库,最像关系型数据库,定位于灵活的nosql数据库。适用于网站后台数据库、小文件系统、日志分析系统。
增加一条数据
import pymysql
#返回Connection对象
#host="localhost"
con = pymysqlconnect(host="1921683128",
port=3306,user="atguigu",
password="atguigu",
db="atguigudb",
charset="utf8")
#返回cursor对象
cursor = concursor()
#SQL语言-SQL语句
sql = "insert into students(name) value('李四')"
#插入数据
cursorexecute(sql)
#提交数据,没有提交就没有数据
concommit()
#关闭释放资源
cursorclose()
#关闭资源
conclose()
修改数据
import pymysql#修改任意一条数据
#返回Connection对象
conn = pymysqlconnect(
host="1921683128",
db="atguigudb",
port=3306,
user="atguigu",
password="atguigu",
charset="utf8"
)
cursor = conncursor()
sql = "update students set name='郭靖' where id = 1"
count = cursorexecute(sql)
print("count=",count)
#提交正常数据物理上修改了
conncommit()
cursorclose()
connclose()
删除数据
import pymysql#修改任意一条数据
#返回Connection对象
conn = pymysqlconnect(
host="1921683128",
db="atguigudb",
port=3306,
user="atguigu",
password="atguigu",
charset="utf8"
)
cursor = conncursor()
sql = "delete from students where id =20"
count = cursorexecute(sql)
print("count=",count)
conncommit()
cursorclose()
connclose()
查询一条数据
import pymysqltry:
conn=pymysqlconnect(
host='1921683128',
port=3306,
db='atguigudb',
user='atguigu',
passwd='atguigu',
charset='utf8'
)
cursor=conncursor()
cursorexecute('select from students where id = 3')
#返回满足这个条件的这个数据,如果有多条返回第一条,并且封装元组中
result = cursorfetchone()
print(result)
for i in result:
print(i)
cursorclose()
connclose()
except Exception as e:
print(emessage)
查询多条数据
import pymysqltry:
conn=pymysqlconnect(
host='1921683128',
port=3306,
db='atguigudb',
user='atguigu',
passwd='atguigu',
charset='utf8'
)
cursor=conncursor()
cursorexecute('select from students')
#返回元组,如果多条数据,元组里面嵌套元组
result = cursorfetchall()
print(result)
for i in result:
print(i)
conncommit()
cursorclose()
connclose()
except Exception as e:
print(emessage)
读取mysql数据,填写数据到excel
from pyexcel_xls import save_datafrom pyexcel_xls import get_data
from collections import OrderedDict
import mysqlconnector
#和数据库建立连接
cnx =mysqlconnectorconnect(user='root', password='',
host='127001',
database='test')
#查询语句
sql = "select my_name,my_value from tbl_members "
#执行查询
cursorexecute(sql)
#获得查询结果
result = cursorfetchall()
cursorclose()
cnxclose()
#打开预定义表头文件
xls_header= get_data("d:/xhxls")
#获得表头数据
xh = xls_headerpop("Sheet1")
#拼接整表数据
xd = OrderedDict()
xdupdate({"Sheet 1":xh+result})
#保存到另一个文件中
save_data("d:/xdxls",xd)
1背景:
python提供了很多数据库接口, 常用的数据库有 MS SQL Server /mysql /oracle 等。
打开链接 >
是python 关于数据库接口的一个总结 , 可以看到python支持的访问的数据库系统。
2模块:
python 主要是通过模块和数据库连接的。
21 安装模块:
如果使用anconda,本身就会集合很多模块,不需要手动安装。如果用pycharm就要手动安装模块。
安装模块流程:
下载模块扩展包放到路径下——>cmd找到相应路径——> pip install +扩展包名字
下面列举一些常用连接数据库的模块:pymssql / sqlite3/ PyMySQL/pyodbc/odbc/adodbapi
不同模块连接的数据库不同, 支持的版本系统有的也不一样。但是大体用法都是相近的, 因为有DB-API
:《Python教程》
3Python DB-API
31背景:
在没有DB-API 之前, 不同数据库有不同的数据库接口程序, 这就导致python 访问 database 的接口程序非常混乱。如果我们学习了python 访问 mysql 的接口程序, 然后要切换到另一个数据库上, 我们还要在学习另外一个数据库的接口程序。python DB-API就是为了解决接口程序混乱而生成的。有了DB-API, 在不同数据库上移植代码就变得简单的多了。
32Python DB-API:
Python 定义了一套 *** 作数据库的 DB-API 接口,它是一个规范,定义了一系列必须的对象和数据库存取方式,以便为不同的底层数据库系统提供一致的访问接口
这个链接就是python 官方给定的 DB-API 的说明 >
33 Python DB--API的内容:
连接对象:
Connect()创建连接:host/server /user/password/db connect方法生成一个connect对象, 我们通过这个对象来访问数据库。符合标准的模块都会实现connect方法。
close():关闭连接
commit():提交当前事务。做出某些更改后确保已经进行了提交,这样才可以将这些修改真正地保存到database中
rollback() 回滚上一次调用 commit()以来对数据库所做的更改
cursor():创建游标。系统为用户开通的一个数据缓冲区,用于存放SQL语句执行结果。cursor游标是有状态的,它可以记录当前已经取到结果的第几个记录了,因此,一般你只可以遍历结果集一次。在上面的情况下,如果执行fetchone()会返回为空。这一点在测试时需要注意
游标对象:
Execute()执行一个数据库查询或命令。 execute 执行sql 语句之后运行的结果不会直接output 出来 , 而是放到了一个缓存区, 要用 fetch语句+print 可以查询sql运行的结果
fetchone ()得到结果集的下一行
fetchmany(size)得到结果集的下几行
fetchall()返回结果集中剩下的所有行
rowcount 返回影响的行数
Close()关闭游标对象
34Python DB--API的工作原理及流程:
如图所示如果把python 和数据库比作两个不同的地点, connection 就是路, 能连接python和database。cursor就像在路上行驶的小货车, 可以用于执行sql 语句, 以及存储sql 运行的结果。
流程:
4MS SQL Server 示例:
41 导入模块、创建连接:
42 创建游标: 游标创建之后就可以对数据库进行查询更改了!
43对数据进行 *** 作(创建表、插入行、更新数据、增加列、删除行、列、表):
44 查询 获取行:
5其他:
使用游标的时候要注意, 每次连接只能有一个游标查询处于活跃状态。 code演示:
execute()循环和 executemany() 插入100000 条数据测速:
Python存200w数据到数据库需要474秒,因为正常的三万八千条数据仅需要9秒,以此类推出200万需要的时间。
python存数据库速度
1、需要从文本中读取三万条数据写入mysql数据库,文件中为用@分割的sql语句,但是在读取的过程中发现速度过慢,三万八千条数据需要220秒,
2、经测试发现,影响速度的主要原因是commit(),因为没过几秒提交一次即可,但是因为提交的字符长度有限制,所以要设置一个合理的时间读取。
3、更改后,写入三万八千条数据仅需要9秒
以上就是关于Python学哪个数据库全部的内容,包括:Python学哪个数据库、python使用数据库、python如何访问数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)