问题描述
我正在尝试使用sqlAlchemy在sql Server中创建图形表。
sql将如下所示:
CREATE TABLE [audit].[tableMetaData](
[_tableMetaDataId] INT PRIMARY KEY IDENTITY(1,1),[table] VARCHAR(200),[createdDateTime] DATETIME,[loadType] VARCHAR(200),[loadBy] VARCHAR(200),[description] VARCHAR(MAX),) AS NODE;
auditMeta = MetaData()
tableMetaData = Table(
'tableMetaData',auditMeta,Column('_tableMetaDataId',INTEGER,primary_key = True),Column('table',VARCHAR(200)),Column('createdDateTime',DATETIME),Column('loadType',Column('loadBy',Column('description',VARCHAR(None)),schema = auditSchema
)
auditMeta.create_all(auditEngine)
如何将“ AS NODE”组件添加到sql Alchemy代码中,以使sql Server知道这是一个Graph表?
非常感谢您的帮助。
解决方法
您可以更改CreateTable
构造的默认编译方式
from sqlalchemy.schema import CreateTable
from sqlalchemy.ext.compiler import compiles
auditMeta = MetaData()
tableMetaData = Table(
'tableMetaData',auditMeta,Column('_tableMetaDataId',INTEGER,primary_key = True),Column('table',VARCHAR(200)),Column('createdDateTime',DATETIME),Column('loadType',Column('loadBy',Column('description',VARCHAR(None)),schema = auditSchema,info={'as_node': True}
)
@compiles(CreateTable)
def create_as_node(create_table,compiler,**kw):
if create_table.element.info.get('as_node'):
compiler.post_create_table = lambda x: ' AS NODE'
return compiler.visit_create_table(create_table,**kw)
auditMeta.create_all(auditEngine)