首页 > 解决方案 > 如何使用没有数据库名称的引擎对象查询数据库

问题描述

_CFG = {
      'user': os.getenv("MYSQL_USER"),
      'password': os.getenv("MYSQL_PASSWORD"),
      'host': os.getenv("MYSQL_SERVER"),
      'database': os.getenv("SENSOR_DB"),
      'raise_on_warnings': True
    }

早些时候我写了一个函数,它需要_CFG.

connection = mysql.connector.connect(**_CFG)

这将返回连接对象或连接引擎!

但后来我意识到对于某些表我有不同的数据库,然后我决定创建没有连接引擎对象'database': os.getenv("SENSOR_DB")但这意味着我必须稍后指定数据库名称才能连接!

但是在我的工作场所,我们没有指定数据库名称,它给了我们查询结果。现在我没有查看 API,因为我无权访问它。所以我想知道我应该如何处理这个问题,我应该通过访问每个表查询的数据库对象吗?或其他一些方法

其次,我最初尝试使用 SQLAlchemy ORM,但由于这个原因,我无法安装MySQLDb. 我暂时只是坚持使用 mysql 连接器,因为这是我的家庭物联网基础设施项目。

标签: mysqlpython-3.x

解决方案


您可以在查询中使用dbname.tablename而不是。tablename

MySQL 协议在连接期间仍然需要数据库名称,但只需使用您拥有的任何数据库,例如information_schema。(它是一个始终存在的虚拟数据库)


推荐阅读