2012-02-01 61 views
0

我有我正努力找出解决方案使用案例实施,实施如下:如何在运行时使用SQLAlchemy执行用户定义的SQL查询?

  • 用户定义的SQL服务器连接参数,如DATABASE_TYPE(如MySQL,pgsql的,SQLite的或任何数据库支持通过SQLAlchemy的),主机,端口SCHEMA_NAME,user_name和password
  • 用户然后做测试连接以验证所提供的连接参数,并提供成功或失败反馈
  • 成功时,用户将在SQL查询中输入内容(以下SQLAlchemy的SQL表达式语言更多详细信息here)需要执行哪个编辑。

如果上面是用户在运行时定义的所有参数的SQLAlchemy工作的通知,我想实现消耗上述连接参数和SQL查询在Python的功能,执行成功的连接查询和返回查询结果。任何关于这方面的指导或帮助都很好。

感谢

+0

为什么不直接在'>>>'Python提示符下执行此操作?如果一切都只是访问SQLAlchemy,为什么要编写任何额外的代码? – 2012-02-01 13:26:34

+0

@ S.Lott那么用户通过Web表单提交连接参数和sql查询(作为一个字符串),并且使用SQLAlchemy来抽象查询格式。 – 2012-02-01 13:33:23

+0

为什么有这样的网络表单?它似乎并不像网页表格真的在做任何有用的工作? – 2012-02-01 14:00:34

回答

1

我有这样的事情作为一个更大的项目的一部分,至今只限于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.') 

Cusom SQL查询可以使用文本来执行()构建如图here

+0

感谢@Bogdan的方向,它确实解决了我的问题。再次感谢。 – 2012-02-01 16:01:34

+0

@Bodgan想要检查是否可以帮助指导如何将动态查询序列化序列化为JSON或pickle?谢谢。 – 2012-02-01 16:09:05

+0

我不确定我完全理解你正在尝试做什么。也许你可以尝试在这个问题上提出另一个问题,例如你想要什么/尝试过什么,如果可能,我会尽力帮忙。 – Bogdan 2012-02-01 16:12:13