我为现有数据库表创建了一个类,以便在SQLAlchemy中使用映射
def __init__(self, Server, Database, automap = False, tables = None):
self.DRIVER = '{SQL Server Native Client 11.0}'
self.SERVERNAME = Server
self.DATABASE = Database
self.conn_str = (
r'Driver=' + self.DRIVER + ';'
r'Server=' + self.SERVERNAME + ';'
r'Database=' + self.DATABASE + ';'
r'Trusted_Connection=yes;'
)
self.pyodbc = pyodbc.connect(self.conn_str)
self.sqlalchemy_engine = sqla.create_engine("mssql+pyodbc:///?odbc_connect=%s" % urllib.parse.quote_plus(self.conn_str)) #, echo=True)
self.Session = sessionmaker(bind=self.sqlalchemy_engine, autoflush=True)
self.session = self.Session()
self.metadata = MetaData()
if self.DATABASE == 'ACQ_RH_EXP':
if tables != None:
self.metadata.reflect(bind=self.sqlalchemy_engine, only=tables)
else:
self.metadata.reflect(bind=self.sqlalchemy_engine)
else:
schemas = {'Admin','dbo'}
for s in schemas:
self.metadata.reflect(bind=self.sqlalchemy_engine, schema=s)
self.Base = automap_base(metadata = self.metadata)
self.Base.prepare()
它的工作原理似乎是,我可以看到所有的表,但没有元数据,也没有可见的模式信息,尽管我可以通过
vulcan.metadata.tables['Admin.ACQ_GEOLOGY_Q']
我的问题是:
我目前正在重做映射,但它似乎没有找到新列
for s in schemas:
vulcan.metadata.reflect(bind=vulcan.sqlalchemy_engine, schema=s)
vulcan.Base = automap_base(metadata = vulcan.metadata)
vulcan.Base.prepare()
问候
目前没有回答
相关问题 更多 >
编程相关推荐