如何指示SQLAlchemy在create_all()上创建SQLite FTS3表?

如何指示SQLAlchemy在create_all()上创建SQLite FTS3表?,第1张

概述我希望SQLAlchemy在.create_all()期间创建一个FTS3表.我需要添加哪些特殊选项才能知道创建虚拟表…使用FTS3(tokenizer = …)? 据我所知要实现这个futer你必须改进sqlite方言来改变create_table行为. 但你可以使用这个快速但丑陋的解决方案“monkeypatching” # ugly monkeypatchfrom sqlalchemy.d 我希望sqlAlchemy在.create_all()期间创建一个FTS3表.我需要添加哪些特殊选项才能知道创建虚拟表…使用FTS3(tokenizer = …)? 据我所知要实现这个futer你必须改进sqlite方言来改变create_table行为.

但你可以使用这个快速但丑陋的解决方案“monkeypatching”

# ugly monkeypatchfrom sqlalchemy.dialects.sqlite.base import sqliteDDLCompilerold_create_table = sqliteDDLCompiler.visit_create_tabledef new_create_table(*args,**kwargs):    sql = old_create_table(*args,**kwargs)    # Todo     # 1) check table with FTS3     # 2) change sql to CREATE VIRTUAL table ... USING FTS3(tokenizer=...)    print 'sql: %s' % sql    return sqlsqliteDDLCompiler.visit_create_table = new_create_table# end of ugly monkey patchfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import schema,MetaData,Column,IntegerMetadata = MetaData()Base = declarative_base(Metadata=Metadata) class MyModel(Base):    __tablename__ = 'table'    ID = Column(Integer,primary_key=True)if __name__ == '__main__':    from sqlalchemy import create_engine    engine = create_engine('sqlite:///',echo=True)    Metadata.bind = engine    Metadata.create_all()
总结

以上是内存溢出为你收集整理的如何指示SQLAlchemy在create_all()上创建SQLite FTS3表?全部内容,希望文章能够帮你解决如何指示SQLAlchemy在create_all()上创建SQLite FTS3表?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1160284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存