如何在运行时使用SQLAlchemy执行用户定义的SQL查询?
我有一个具体的应用场景,想要找到解决方案,具体实现步骤如下:
- 用户需要定义一些连接SQL服务器的参数,比如数据库类型(可以是MySQL、pgsql、sqlite,或者其他SQLAlchemy支持的数据库)、主机地址、端口号、数据库名称、用户名和密码。
- 用户接着会进行“测试连接”,来验证刚才输入的连接参数是否正确,并给出连接成功或失败的反馈。
- 如果连接成功,用户就可以输入要执行的SQL查询(遵循SQLAlchemy的SQL表达语言,详细信息可以点击这里查看)。
从上面的步骤可以看到,所有SQLAlchemy工作所需的参数都是在运行时由用户定义的。我正在尝试用Python实现一个功能,能够使用这些连接参数和SQL查询,在连接成功后执行查询并返回结果。如果你能给我一些方向或帮助,那就太好了。
谢谢!
1 个回答
1
我在做一个大项目,里面有一些内容是关于sqlite和postgres的,不过这些内容可以推广到其他数据库。
首先,如果你希望用户知道数据库类型(比如MySQL、pgsql、sqlite或者任何SQLAlchemy支持的数据库),还有主机地址、端口、模式名称、用户名和密码,那你可以直接让他们提供数据库的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()这个构造来执行自定义的SQL查询,具体用法可以在这里查看。