我正在使用SQLalchemy与automap和一系列SQLite数据库产生的程序,我无法控制。但是,我需要扩展数据库以提供额外的功能,所以我使用SQLalchemy ORM修改这个数据库,并使用automap访问我没有更改的表和列。在

类定义(保留在自己的模块中):Base = automap_base()

class VariantAssociation(Base):

__tablename__ = "sample_variant_association"

vid = Column(Integer, ForeignKey("variants.variant_id"),

primary_key=True, index=True)

sid = Column(Integer, ForeignKey("samples.sample_id"),

primary_key=True, index=True)

vdepth = Column(Integer, index=True)

valt_depth = Column(Integer, index=True)

gt = Column(Text)

gt_type = Column(Integer)

fraction = Column(Float, index=True)

variant = relationship("Variant", back_populates="samples")

sample = relationship("Samples", back_populates="variants")

class Variant(Base):

__tablename__ = "variants"

variant_id = Column(Integer, primary_key=True)

info = deferred(Column(LargeBinary))

samples = relationship("VariantAssociation",

back_populates="variant")

compressed = False

_gt_alt_depths = None

_gt_depths = None

_gts = None

_gt_types = None

def decompress(self, compressed=False):

if compressed:

unpack = snappy_unpack_blob

else:

unpack = unpack_blob

self._gt_alt_depths = unpack(self.gt_alt_depths)

self._gt_depths = unpack(self.gt_depths)

self._gts = unpack(self.gts)

self._gt_types = unpack(self.gt_types)

def __repr__(self):

data = ""

return data.format(chrom=self.chrom,

start=self.start,

end=self.end,

gene=self.gene,

ref=self.ref,

alt=self.alt,

type=self.type)

@property

def alt_depths(self):

return self._gt_alt_depths

@property

def depths(self):

return self._gt_depths

@property

def genotypes(self):

return self._gts

@property

def genotype_types(self):

return self._gt_types

class Samples(Base):

__tablename__ = "samples"

sample_id = Column(Integer, primary_key=True, index=True)

name = Column(Text, index=True)

variants = relationship("VariantAssociation",

back_populates="sample")

class DataMigration(Base):

__tablename__ = "datamigration"

done = Column(Boolean, primary_key=True)

然后我用这种方法加载数据库(在另一个函数中,它从定义表的地方导入Base):

^{pr2}$

但是,如果我加载两个数据库,无论第一次泄漏到后续运行中发生什么情况:db = load_database("file1.db") # All right

db2 = load_database("file2.db") # Throws exception

例外情况是:io.py in load_database(database)

150

151 # Create association table if not present

--> 152 VariantAssociation.__table__.create(bind=engine, checkfirst=True)

153 DataMigration.__table__.create(bind=engine, checkfirst=True)

154

[cut exception all into SQLalchemy internals]

OperationalError: (sqlite3.OperationalError) index ix_sample_variant_association_valt_depth already exists [SQL: 'CREATE INDEX ix_sample_variant_association_valt_depth ON sample_variant_association (valt_depth)']

如果我在单独的会话中加载数据库,则不会发生这种情况,因此db的状态正以某种方式泄漏到db2。在

确保每个加载的数据库ORM是独立的最好方法是什么?在

编辑:更多调试显示,CREATE INDEX被使用了两次:2017-09-15 15:18:00,284 INFO sqlalchemy.engine.base.Engine ()

2017-09-15 15:18:00,417 INFO sqlalchemy.engine.base.Engine COMMIT

2017-09-15 15:18:00,418 INFO sqlalchemy.engine.base.Engine CREATE INDEX

ix_sample_variant_association_valt_depth ON sample_variant_association

(valt_depth)

2017-09-15 15:18:00,418 INFO sqlalchemy.engine.base.Engine ()

2017-09-15 15:18:00,550 INFO sqlalchemy.engine.base.Engine COMMIT

2017-09-15 15:18:00,551 INFO sqlalchemy.engine.base.Engine CREATE INDEX

ix_sample_variant_association_valt_depth ON sample_variant_association

(valt_depth)

sql建立到mysql的会话_SQLalchemy会话和多个数据库尝试创建twi索引相关推荐

  1. 《MySQL数据技术与实验指导》jxgl数据库的创建和插入

    简述 之前都是在宿舍的一个台式电脑上写数据库的作业,但是最近需要出去外面比赛,路上可能就需要写作业.所以就打算重新写一遍这个作业.顺便就写一下答案. jxgl这个库之后会需要用到. 环境介绍 wind ...

  2. MySQL中创建jxgl数据库_《MySQL数据技术与实验指导》jxgl数据库的创建和插入

    简述 之前都是在宿舍的一个台式电脑上写数据库的作业,但是最近需要出去外面比赛,路上可能就需要写作业.所以就打算重新写一遍这个作业.顺便就写一下答案. jxgl这个库之后会需要用到. 环境介绍 wind ...

  3. db2 mysql sql server_下文给大家介绍mysql数据库介绍,具体详情如下所示:MySQL数据库:Oracle、DB2、SQL Server、MySQL、access、mang...

    下文给大家介绍mysql数据库介绍,具体详情如下所示: MySQL 数据库: Oracle.DB2.SQL Server.MySQL.access.mangodb.bigtable 关系型数据库 大型 ...

  4. CentOS 7下载安装MySQL 5.7以及连接虚拟机CentOS 7数据库教程

    CentOS 7下载安装MySQL 5.7以及连接虚拟机CentOS 7数据库教程 文章目录 CentOS 7下载安装MySQL 5.7以及连接虚拟机CentOS 7数据库教程 创建一个mysql 文 ...

  5. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·001【数据库基本概念、MySQL安装与介绍】

    文章目录 一.数据库基本概念 1.DB与DBMS 2.数据库系统的构成 3.数据管理发展过程 4.数据库 5.关系型数据库 二.MySQL安装与卸载 三.与MySQL相关的常用命令 四.MySQL相关 ...

  6. SQL Server和MySQL数据库

    导读:接下来的网上商城的项目,需要用到MySQL数据库了.这个对于我来说,是一个新接触的东西,按照惯例,在刚开始学习一个东西的时候,先从宏观上去了解它.本篇博客,先介绍SQL Server的基本内容, ...

  7. Python与sql交互入门(mysql和sqlite)

    (以下所有操作使用的均为Mac系统+pycharm为IDE,需要有数据库理论基础和sql语法知识) 目录 1.终端sql操作(mysql数据库) --连接数据库 --退出数据库 --查看所有数据库 - ...

  8. SQL注入之MYSQL注入总结

    简介 information_schema是用于存储数据库元数据的表,它保存了数据库名,表名,列名等信息. 让我们从爆破表名到了可以直接查询. information_schema是MySQL5.0以 ...

  9. mybatisplus执行sql语句_[MySQL]sql语句的执行流程

    此篇极客时间专栏<MySQL实战45讲>笔记,文中部分图文来自该专栏. MySQL的执行流程示意图: 大体来说,MySQL可以分为Server层和存储引擎层两部分. Server层包括连接 ...

最新文章

  1. Python使用matplotlib可视化排序的点图、点图表示数据的等级顺序、沿着水平轴对齐(Ordered Dot Plot)
  2. Spring整合Hibernate
  3. python使用get和post方法_python爬虫中get和post方法介绍以及cookie作用
  4. Mysql的B树/B+/B*/R树(补充)
  5. Linux进程全解12——lIPC机制之管道,SystemV IPC介绍
  6. 图像风格迁移(Neural Style)简史
  7. 不可重复读和幻读的区别_图解脏写、脏读、不可重复读、幻读
  8. SQL Server2008 查找用户登录日志
  9. HDU - 2586 How far away ?(离线Tarjan算法)
  10. 建立标准SQL Server触发器
  11. 20161114课堂笔记
  12. oracle启动crs要多久,oracle 10g CRS不能启动解决过程(hp-ux)
  13. 我的中兴五年:加班为何成了底层员工心中永远的痛
  14. Vue或uniapp使用luckysheet免费开发多人在线编辑Excel文档
  15. 梦幻西游代理途径有哪些?需要注意什么
  16. pyhon3爬取百度搜索结果
  17. 小项目1——猫眼电影top100(2.0)
  18. 【重识云原生】第六章容器基础6.4.9.6节——Service 与 Pod 的DNS
  19. 诛仙3 私服架设 仿官网
  20. 简单排序算法时间空间复杂度分析及应用(4)-二分插入排序

热门文章

  1. 马尔科夫随机场之图像分割【二】
  2. 数据仓库之电商数仓-- 3.4、电商数据仓库系统(ADS层)
  3. 让自己开发的Web应用程序与SharePoint共存
  4. Objective-C 日记③ 字符串
  5. matlab预测ARMA-GARCH 条件均值和方差模型
  6. Google传奇Jeff Dean最新演讲:如何构建未来的机器学习芯片
  7. 如何获取url中的参数并传递给iframe中的报表
  8. 多个tomcat部署的端口问题
  9. android 用webView作为编辑器 各种问题
  10. Tyvj P1463 智商问题 分块