为你的应用程序选择合适的数据库是很重要的,特别是对于直接与数据库对接的后台应用程序。有许多选择,每一种都适合于某些使用情况,并且有不同的价格、速度和扩展选项。
Python通常用于数据量大的应用,因为它有强大的数据处理库,所以你在Python应用中使用的数据库很重要。
本文将MariaDB与其他数据库技术如MySQL和PostgreSQL进行了比较,并讨论了为什么在使用Python时它是一个不错的选择。
什么让MariaDB对Python如此出色?
由于其强大的数据操作和机器学习库,Python是数据从业者的一种流行的编程语言–特别是在数据工程和数据科学领域。这两个领域都要处理大量的数据,增加了所需的存储以及内存和处理能力的需求。
许可证费用往往随着你的数据大小而增加,所以使用开源数据库是有意义的。你还可以在硬件上省钱。因为你可以完全控制应用程序的部署位置,你可以在云端或企业内部找到最便宜的解决方案。
存在许多开源数据库,包括关系型、NoSQL和图形数据库。关系型数据库一般对结构和一致性非常好,而NoSQL数据库,能够实现快速开发,被设计得更加灵活。
尽管Python与NoSQL数据库配合得非常好,但关系型数据库更适合于分析和大规模的数据处理,这也是Python的常见用途。
让我们将MariaDB与其他一些流行的开源关系型数据库进行比较。
MariaDB vs MySQL vs PostgreSQL
最流行的开源关系型数据库是MariaDB、SQLite、MySQL和PostgreSQL。每一个都有一套类似的核心技术能力,但是MariaDB有一些独特的功能,使它最适合Python应用。
此外,MariaDB是开源的,所以它的功能并不依赖于像MySQL这样的外部实体,而MySQL现在是甲骨文公司的。尽管开源社区仍然可以对MySQL提出建议和增加功能,但甲骨文(拥有一个竞争性的数据库)决定了它的发展方向。
另一方面,MariaDB是在甲骨文收购MySQL后创建的,以继续采用社区主导的开发方式。因此,MariaDB拥有更丰富的功能集,包括更多的存储引擎,确保查询和复制的性能比MySQL更好。在处理大型数据集时,这种改进的性能是非常重要的。
使用MariaDB而不是PostgreSQL的原因要更细微一些,因为PostgreSQL也是社区驱动的。然而,PostgreSQL使用它自己的类似BSD的许可证,即PostgreSQL许可证,它比MariaDB的GNU许可证更加宽松,并且允许用户创建闭源扩展。
虽然它们对创建扩展的用户有利,但这些功能并不总是在核心的PostgreSQL数据库中使用,而且开发者甚至可以对使用他们的扩展收费。MariaDB和MySQL GNU的许可不允许新功能被私有化–所有的新功能都是免费提供的。
MariaDB和PostgreSQL拥有最丰富的功能集。然而,MariaDB对于Python后端有一些方便的功能。例如,MariaDB使用一种语言与所有不同的存储引擎对接–OLAP和OLTP系统用相同的语法控制,减少了开发者的负担。
你的Python后端可以向MariaDB写入类似交易的数据,MariaDB可以将这些数据复制到更适合分析性查询的存储引擎。开发人员可以使用相同的语法编写针对副本的分析查询,以提高性能。
MariaDB最近还为字符串引入了类似于f-String的格式化,与Python相似。这使使用MariaDB和Python的开发人员不必在语言之间进行切换。
MariaDB Python连接器
2020年之前,Python程序员通过MySQL Python包连接到MariaDB。这是有可能的,因为MariaDB是MySQL的一个分支,但这意味着MariaDB连接的行为与MySQL相同。
2020年,一个原生的MariaDB连接器被发布,以消除对MySQL的依赖,给MariaDB社区更多控制权。你可以用Python的软件包管理器安装连接器,并将其用于所有常见的CRUD用例。
所有的语句都是通过游标对象管理的。默认情况下,MariaDB游标接受作为准备好的语句的查询,所以你可以对查询的任何动态部分进行消毒。这比格式化字符串来构建查询更安全,格式化字符串会使你的应用程序容易受到SQL注入攻击。
连接器如何工作
该连接器使用起来很简单。首先,你将MariaDB连接器库导入到你的应用程序中,并使用以下函数连接到你的MariaDB数据库服务器:
import mariadb try: connection = mariadb.connect( user=username, password=password, host=mariadb_host, port=3306, database="sales" ) except mariadb.Error as err: print(f"An error occurred whilst connecting to MariaDB: {err}")
一旦连接,所有的查询都是通过游标对象执行的。你获得游标对象,然后用它来提交查询。
cursor = conn.cursor()
要将查询作为一个准备好的语句提交,在查询文本中使用一个问号作为占位符,并将所需的值作为一个元组传入。
ur.execute( "SELECT * FROM sales WHERE sale_date >= ? and price > ?", (sale_date_val, price_val))
元组的输入值按从左到右的顺序替换问号。这些输入值也是经过消毒处理的,以防止SQL注入。内置的对SQL注入的保护对像Python这样的语言是有益的,因为它是为初级程序员设计的。
用于WordPress的Python和MariaDB
使用MariaDB作为Python应用程序的后台的另一个好处是,很容易将数据库连接到WordPress的前端,特别是在使用Kinsta的时候。
许多服务器支持MariaDB作为后端数据库,使得它们可以立即兼容。你的WordPress网站可以很容易地访问用Python处理的数据集。例如,你可以在Python中进行一些分析,将结果存储在MariaDB中,然后在WordPress页面上以图表形式显示。
小结
多个开源的关系型数据库,包括MariaDB、MySQL和Postgres,都可以作为Python的后端。然而,由于MariaDB的开源性质,它是最灵活和功能最丰富的选择。
在处理大型数据集时,MariaDB提供了许多存储引擎,使得它比其他替代方案更快,并且支持多种用例,从交易处理到分析查询。灵活性、速度以及与MariaDB Python连接器的原生Python集成,使其成为处理大型数据集的Python应用程序的一个伟大选择。
评论留言