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

时间:2012-02-01 13:21:21

标签: python sql sqlalchemy

我有一个用例实现,我正在尝试识别解决方案,实现如下:

  • 用户定义SQL服务器连接参数,如DATABASE_TYPE(如MySQL,pgsql,sqlite或SQLAlchemy支持的任何数据库),HOST,PORT,SCHEMA_NAME,USER_NAME和PASSWORD
  • 用户然后执行TEST CONNECTION以验证提供的连接参数,并提供SUCCESS和FAILURE反馈
  • 在SUCCESS上,用户将输入需要执行的sql查询(遵循SQLAlchemy的SQL表达式语言更多详细信息here)。

如果你注意到SQLAlchemy工作的所有参数都是在运行时用户定义的,我试图在python中实现这个函数,它使用上面的连接参数和sql查询,在成功连接时执行查询并返回查询结果。任何关于这方面的指导或帮助都会很棒。

由于

1 个答案:

答案 0 :(得分:1)

我有这样的事情作为一个更大的项目的一部分,到目前为止只有sqlite和postgres,但这可以推广。

首先,如果您希望用户知道DATABASE_TYPE(如MySQL,pgsql,sqlite或SQLAlchemy支持的任何数据库),HOST,PORT,SCHEMA_NAME,USER_NAME和PASSWORD,您可以直接询问数据库网址更容易。

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

    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查询,如图所示here