SQLAlchemy数据库构建&重用

时间:2012-03-04 10:41:18

标签: python database sqlalchemy

我正在努力通过SQLAlchamy来理解它的文档和教程。

我看到如何从数据库表中自动加载类,我看到如何设计一个类并从中创建(声明性地或使用mapper())一个添加到数据库的表。

我的问题是如何编写创建表格的代码(例如首次运行)然后重复使用

我不想用一个工具或一段代码创建数据库,并且有单独的代码来使用数据库。

提前致谢, 彼得

2 个答案:

答案 0 :(得分:1)

如果表已经存在,

create_all()不会执行任何操作,因此只需在设置引擎或连接后立即调用它。

(请注意,如果您更改您的表架构,create_all()更新它!所以您仍然需要“另一个程序”来执行此操作。)

这是通常的模式:

def createEngine(metadata, dsn, **args):
    engine  = create_engine(dsn, **args)
    metadata.create_all(engine)
    return engine

def doStuff(engine):
    res = engine.execute('select * from mytable')
    # etc etc

def main():
    engine = createEngine(metadata, 'sqlite:///:memory:')
    doStuff(engine)

if __name__=='__main__':
    main()

答案 1 :(得分:0)

我认为你可能会过度思考这种情况。如果你想重新创建数据库,通常只需要调用Base.metadata.create_all()或同等数据,如果你不想这样做,就不要调用它。

您可以尝试每次调用它并在出现错误时处理异常,假设已经设置了数据库。

或者您可以尝试查询某个表格,如果失败,请致电create_all()将所有内容放到位。

无论您是否执行数据库创建,应用程序的每个其他部分都应以相同的方式工作。