如何使用 SQLAlchemy 在运行时执行用户定义的 SQL 查询?

发布于 2025-01-01 13:07:13 字数 499 浏览 1 评论 0原文

我有一个用例实现,我试图确定解决方案,实现如下:

  • 用户定义 SQL 服务器连接参数,如 DATABASE_TYPE(如 MySQL、pgsql、sqlite 或 SQLAlchemy 支持的任何数据库)、HOST、PORT、 SCHEMA_NAME、USER_NAME 和 PASSWORD
  • 用户然后执行测试连接以验证提供的连接参数,并提供成功和失败反馈。
  • 成功时,用户将键入sql 查询(以下 SQLAlchemy 的 SQL 表达式语言更多详细信息此处)需要被处决。

如果您注意到上面 SQLAlchemy 工作的所有参数都是用户在运行时定义的,我正在尝试在 python 中实现该函数,该函数使用上述连接参数和 sql 查询,在成功连接时执行查询并返回查询结果。对此的任何指导或帮助都会很棒。

谢谢

I have a use case implementation for which I am trying to identify the solution, the implementation is as follows :

  • User defines the SQL server connection parameters like DATABASE_TYPE ( like MySQL, pgsql, sqlite or any db supported by SQLAlchemy), HOST, PORT, SCHEMA_NAME, USER_NAME and PASSWORD
  • User then does the TEST CONNECTION to validate the connection parameters provided, and provides SUCCESS and FAILURE feedback
  • On SUCCESS, user will type in the sql query ( following SQLAlchemy's SQL Expression Language more details here ) the which needs to be executed.

If you notice above all the parameters for SQLAlchemy to work are user defined at run time, I am trying to implement the function in python which consumes the above connection parameters and sql query, executes the query on successful connection and returns the query result. Any point of direction or help on this would be great.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

庆幸我还是我 2025-01-08 13:07:13

我有这样的东西作为一个更大项目的一部分,到目前为止仅适用于 sqlite 和 postgres,但这可以概括。

首先,如果您希望用户知道 DATABASE_TYPE(例如 MySQL、pgsql、sqlite 或 SQLAlchemy 支持的任何数据库)、HOST、PORT、SCHEMA_NAME、USER_NAME 和 PASSWORD,您可以只询问 DB URL,以使您的生活更轻松。

之后,您可以通过以下方式测试连接:

    from sqlalchemy import create_engine
    try:
        engine = create_engine(url)           
        connection = engine.connect()
        connection.close()
    except Exception, e:
        LOGGER.exception(e)
        raise MyCusomException('Could not initialize db. Invalid URL.') 

可以使用 text() 构造执行 Cusom sql 查询,如下所示 此处

I'm having something like this as part of a larger project, so far only for sqlite and postgres but this can be generalized.

For start if you expect the user to know DATABASE_TYPE ( like MySQL, pgsql, sqlite or any db supported by SQLAlchemy), HOST, PORT, SCHEMA_NAME, USER_NAME and PASSWORD you could just ask for the DB URL to make your life a little easier.

After that you can test the connection by:

    from sqlalchemy import create_engine
    try:
        engine = create_engine(url)           
        connection = engine.connect()
        connection.close()
    except Exception, e:
        LOGGER.exception(e)
        raise MyCusomException('Could not initialize db. Invalid URL.') 

Cusom sql queries can be executed using the text() construct as shown here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文