Python 访问 MySQL 数据库可以使用哪些第三方实现

Python 访问 MySQL 数据库可以使用哪些第三方实现,第1张

MySQLdbMySQLdb是 Python 连接 MySQL 最流行的一个驱动,很多框架都也是基于此库进行开发,遗憾的是它只支持 Python2x,它是基于C开发的库,和Windows 平台的兼容性不友好,现在基本不推荐使用,取代的是它的衍生版本。mysqlclient由于 MySQLdb 年久失修,后来出现了它的 Fork 版本 mysqlclient,完全兼容 MySQLdb,同时支持 Python3x,是 Django ORM的依赖工具,如果你想使用原生 SQL 来 *** 作数据库,那么推荐此驱动。PyMySQLPyMySQL是纯 Python 实现的驱动,速度上比不上 MySQLdb,最大的特点可能就是它的安装方式没那么繁琐,同时也兼容 MySQLdb。SQLAlchemySQLAlchemy是一种既支持原生 SQL,又支持 ORM 的工具,它非常接近 Java 中的 Hibernate 框架。有关Python访问MySQL数据库全部内容的学习,我都是通过黑马程序员的视频学的。看完之后立马决定去培训了。你可以搜搜,都是免费资源。黑马视频库里面搜索一下,找不到的话官网d出来的对话框问一下就不会迷路了。

Python是编程语言,MySQL是数据库,它们是两种不同的技术;要想使Python *** 作MySQL数据库需要使用驱动。这里选用PyMySQL驱动。

当然,最简单的安装方式还是使用pip命令。

> pip install PyMySQL

把install 换成show命令,查看PyMySQL安装是否成功。

在mac上用python连接远程mysql数据库需要在本机安装mysql吗

mysql-python 是需要本地安装了mysql才行。你安装的xmapp里面的mysql, mysql-python可能没找到正确的配置。

如果不是生产环境,使用 mysql-connector 替代,这个是 mysql官方推荐的驱动,纯python实现。不需要本地配置本地mysql。使用方法和 mysqldb一样。

比如你的数据库文件在同级目录下 你就直接这样:

sqlite3connect('databasedb');

上级目录 这样:

sqlite3connect('/databasedb');

一个快速的REST例子

首先来看些基本知识。如果没有服务API,Neo4j就不能支持其他语言。该接口提供一组基于JSON消息格式的RESTful Web服务和一个全面的发现机制。使用中使用这个接口的最快和最容易的方法是通过使用cURL:

1234567891011121314$ curl "}

从这个端点返回JSON对象包含一组资源名称和URI下可以找到的Cypher端点。在消息载荷中接受传送来的Cyper请求并执行这些查询,在>

正是这种REST API接口,使得现在已有的各种Neo4j驱动得以建立。py2neo提供了这些REST资源的简单封装,这使Python应用程序开发者可以放心使用Neo4j而不用考虑底层的客户机-服务器协议。

一个简单的应用

为实际验证py2neo,我们将着眼于建立一个简单的用于存储姓名和电子邮件地址的通讯录管理系统。我们自然会使用节点来模拟每一个独立实体,但它是要记住,Neo4j没有类型的概念。类型是从周围的关系和属性推断来的。

下面的关系图中人显示为红色、电子邮件地址节点显示为蓝色。这些当然是纯粹的逻辑演示节点,但数据本身并没有区别。 

我们的应用程序将完成两个功能:添加新的联系人信息和检索联系人的完整列表。为此,我们将创建一个Person类包装Py2neoNodeobject,这使我们有一个底层处理的实现且留出用户级的功能。上图中的ROOT节点是指上图中一个固定的参考点,我们沿着这个点开始。

让我们直接看看代码。下面是一个完整的小型应用。这个程序允许添加新的名字与一个或者更多email地址相连接的以及提供了一个容易的方式来显示这些连接信息的一个命令行工具。没有参数的运行是显示使用模式,而且这个唯一的依赖只是需要一个本地未修改的Neo4j实例(instance)而已。

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#!/usr/bin/env python# -- coding: utf-8 --  from __future__ import print_function  import sysfrom py2neo import neo4j, node, rel  graph_db = neo4jGraphDatabaseService()  class Person(object):      _root = graph_dbget_or_create_indexed_node("reference",     "contacts", "root")      @classmethod  def create(cls, name, emails):    person_node, _ = graph_dbcreate(node(name=name),       rel(cls_root, "PERSON", 0))    for email in emails:      graph_dbcreate(node(email=email), rel(cls_root, "EMAIL", 0),         rel(person_node, "EMAIL", 0))    return Person(person_node)      @classmethod  def get_all(cls):    return [Person(personend_node) for person in       cls_rootmatch("PERSON")]      def __init__(self, node):    self_node = node      def __str__(self):    return selfname + "\n" + "\n"join(" <{0}>"       format(email) for email in selfemails)      @property  def name(self):    return self_node["name"]      @property  def emails(self):    return [relend_node["email"] for rel in       self_nodematch("EMAIL")]  if __name__ == "__main__":  if len(sysargv) < 2:    app = sysargv[0]    print("Usage: {0} add <name> <email>       [<email>]"format(app))    print("    {0} list"format(app))    sysexit()  method = sysargv[1]  if method == "add":    print(Personcreate(sysargv[2:]))  elif method == "list":    for person in Personget_all():      print(person)  else:print("Unknown command")

在第09行上是第一行Py2neo代码,用来创建了一个GraphDatabaseService对象。通过这个,我们就可以访问使用Neo4j server的大多数功能。可选一个URI传递到这个构造器里,尽管如果什么都没有提供,代而取之的是使用默认的本地参数。也就是说下面两行是完全相等的:

123graph_db = neo4jGraphDatabaseService()graph_db = neo4jGraphDatabaseService("/")

第13行介绍了调用了get_or_create_indexed_node,它提供一种在图形里创建固定引用点的漂亮方式。传统的Neo4j索引允许节点和关系通过键值对访问,而在这个代码里我们使用了带连接的关键字和root值的引用索引实例。在第一次执行时,会创建一个新的节点,而且在随后的执行中,这个节点(即root)会复用(reused)。

在第17行,我们看见了推荐的节点和关系抽象的标记,以及接受和使用节点和关系抽象的 create方法。任意多的抽象都可以被传递到这个方法中,并且在单个批处理转换中创建实体并以指定它们的顺序作为一个列表返回。抽象节点用 节点函数表示并带有一些属性,然而抽象关系使用rel函数接受一个起始节点,类型和终止节点。上下文中,其他节点,关系起始和终止节点可能整合引用到在其他批处理中其他节点。在我们的例子中,我们把根节点连接到新创建的person节点,否则就作为项目0(item 0)了。

这次我们在第24行和38行上以match方法形式和关系见面[@Lesus 注: oschina代码行数有问题。对应于本文的第28和44行]。它试图使用一个特殊的条件集合(set)标识关系,然后使用列表(list)返回它们。这这些示例中,这个关系和PERSON关系相匹配,从root节点和EMAIL关系开始到所给定的person节点。和Cypher很相似,用来查询包含MATCH关键字的场景。

最后值得注意的一点是在上面的代码中访问节点属性的方式只是其中一种简单的方式。Py2neo重写了标准python的__getitem__和 __setitem__方法,通过方括号标识来方便访问任何属性。这点在第34和38行上可以看到。[@Lesus 注:对应于本文的第39和44行]

总结

在那里(代码行34和38)我们这样做了,这显示了它是如何快速简易地在JAVA环境之外拼凑出一个Neo4j应用程序,也显示了Py2neo是如何通过REST API来抽象出大多数沉重的负担。这里的例子并没有解决唯一性,尽管功能上提供了唯一索引和CypherCREATE UNIQUE语句。Django开发者可能也想要考虑一个层,如Neomodel,它在Py2neo顶层上表示了一个Djangoesque ORM-style 层。

以上就是关于Python 访问 MySQL 数据库可以使用哪些第三方实现全部的内容,包括:Python 访问 MySQL 数据库可以使用哪些第三方实现、python 连接mysql数据库,存储过程内创建临时表,查询不到数据、在mac上用python连接远程mysql数据库需要在本机安装mysql吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9444620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存