from pox.core import core
import pox.openflow.libopenflow_01 as of
import re
import datetime
from sqlalchemy import create_engine, ForeignKey
from sqlalchemy import Column, Date, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
log = core.getLogger()
engine = create_engine('sqlite:///nwtopology.db', echo=False)
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
如果我通过重新启动程序重复调用最后四个python语句将对数据库的正确运行产生负面影响。如果已经存在,它会再次创建数据库吗?
答案 0 :(得分:2)
正如sberry所写 - 调用create_engine
并通过重新运行相同的脚本多次创建会话将只打开连接并参考此连接创建SQLAlchemy引擎对象。
因此,这样做不会创建新的sqlite数据库文件,也不会影响数据库的运行。
另外,我建议您确保代码始终在脚本末尾执行session.close()。这将确保所有更改(如果有)将提交到数据库。 通过更改,我的意思是您的脚本可能对数据库执行的任何更新/插入。