sql建立到mysql的会话_SQLalchemy会话和多个数据库尝试创建twi索引
我正在使用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索引相关推荐
- 《MySQL数据技术与实验指导》jxgl数据库的创建和插入
简述 之前都是在宿舍的一个台式电脑上写数据库的作业,但是最近需要出去外面比赛,路上可能就需要写作业.所以就打算重新写一遍这个作业.顺便就写一下答案. jxgl这个库之后会需要用到. 环境介绍 wind ...
- MySQL中创建jxgl数据库_《MySQL数据技术与实验指导》jxgl数据库的创建和插入
简述 之前都是在宿舍的一个台式电脑上写数据库的作业,但是最近需要出去外面比赛,路上可能就需要写作业.所以就打算重新写一遍这个作业.顺便就写一下答案. jxgl这个库之后会需要用到. 环境介绍 wind ...
- db2 mysql sql server_下文给大家介绍mysql数据库介绍,具体详情如下所示:MySQL数据库:Oracle、DB2、SQL Server、MySQL、access、mang...
下文给大家介绍mysql数据库介绍,具体详情如下所示: MySQL 数据库: Oracle.DB2.SQL Server.MySQL.access.mangodb.bigtable 关系型数据库 大型 ...
- CentOS 7下载安装MySQL 5.7以及连接虚拟机CentOS 7数据库教程
CentOS 7下载安装MySQL 5.7以及连接虚拟机CentOS 7数据库教程 文章目录 CentOS 7下载安装MySQL 5.7以及连接虚拟机CentOS 7数据库教程 创建一个mysql 文 ...
- 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·001【数据库基本概念、MySQL安装与介绍】
文章目录 一.数据库基本概念 1.DB与DBMS 2.数据库系统的构成 3.数据管理发展过程 4.数据库 5.关系型数据库 二.MySQL安装与卸载 三.与MySQL相关的常用命令 四.MySQL相关 ...
- SQL Server和MySQL数据库
导读:接下来的网上商城的项目,需要用到MySQL数据库了.这个对于我来说,是一个新接触的东西,按照惯例,在刚开始学习一个东西的时候,先从宏观上去了解它.本篇博客,先介绍SQL Server的基本内容, ...
- Python与sql交互入门(mysql和sqlite)
(以下所有操作使用的均为Mac系统+pycharm为IDE,需要有数据库理论基础和sql语法知识) 目录 1.终端sql操作(mysql数据库) --连接数据库 --退出数据库 --查看所有数据库 - ...
- SQL注入之MYSQL注入总结
简介 information_schema是用于存储数据库元数据的表,它保存了数据库名,表名,列名等信息. 让我们从爆破表名到了可以直接查询. information_schema是MySQL5.0以 ...
- mybatisplus执行sql语句_[MySQL]sql语句的执行流程
此篇极客时间专栏<MySQL实战45讲>笔记,文中部分图文来自该专栏. MySQL的执行流程示意图: 大体来说,MySQL可以分为Server层和存储引擎层两部分. Server层包括连接 ...
最新文章
- Python使用matplotlib可视化排序的点图、点图表示数据的等级顺序、沿着水平轴对齐(Ordered Dot Plot)
- Spring整合Hibernate
- python使用get和post方法_python爬虫中get和post方法介绍以及cookie作用
- Mysql的B树/B+/B*/R树(补充)
- Linux进程全解12——lIPC机制之管道,SystemV IPC介绍
- 图像风格迁移(Neural Style)简史
- 不可重复读和幻读的区别_图解脏写、脏读、不可重复读、幻读
- SQL Server2008 查找用户登录日志
- HDU - 2586 How far away ?(离线Tarjan算法)
- 建立标准SQL Server触发器
- 20161114课堂笔记
- oracle启动crs要多久,oracle 10g CRS不能启动解决过程(hp-ux)
- 我的中兴五年:加班为何成了底层员工心中永远的痛
- Vue或uniapp使用luckysheet免费开发多人在线编辑Excel文档
- 梦幻西游代理途径有哪些?需要注意什么
- pyhon3爬取百度搜索结果
- 小项目1——猫眼电影top100(2.0)
- 【重识云原生】第六章容器基础6.4.9.6节——Service 与 Pod 的DNS
- 诛仙3 私服架设 仿官网
- 简单排序算法时间空间复杂度分析及应用(4)-二分插入排序