使用 Python 的 Sqlalchemy 和 Singlestore sql 创建类似于现有的表

Posted

技术标签:

【中文标题】使用 Python 的 Sqlalchemy 和 Singlestore sql 创建类似于现有的表【英文标题】:Create tables similar to existing using Python's Sqlalchemy and Singlestore sql 【发布时间】:2022-01-15 08:23:29 【问题描述】:

我在单一存储数据库中有一组现有表,其中许多是列存储表。

我想构建一个 python 脚本,将我的开发表迁移到生产表。 dev 表已经构建、分析并与现有表进行比较,但我不需要硬编码 sql 脚本来用 dev 替换现有的 prod 表,而是需要一种强大的 python 方式来执行此操作。

以下是我目前的代码:

import sqlalchemy
import datalake_toolset as tls # customized module for personal use

# connect to database and obtain metadata
engine = tls.create_lake_engine() # just creates my engine for my database
conn = engine.connect()
metadata = sqlalchemy.MetaData(conn)
metadata.reflect()

# identify the tables and isolate to interested tables only
tables = metadata.tables
tablenames = [x.name for x in tables.values() 
              if x.name.startswith('NamesOfInterest')]

# start with an example table and see if we can create a prod
table = [x for x in tablenames if 'SomeExampleString' in x][0]

# obtain the metadata for the new prod table
table_meta = tables.get(table)

# change table metadata name
table_meta.name = table_meta.name.replace('_Dev_', '_Prod_')

# now go create the prod table

这是我卡住的地方...如何创建新的 Prod 表,其结构和数据类型与 Dev 表相同,同时保留列存储功能(其中一些数据集将是数百万条记录,并且我对这么大的表的默认行存储有业务限制)。

【问题讨论】:

【参考方案1】:

我对 sqlalchemy 了解不多,但是您可以使用CREATE TABLE LIKE 创建一个与现有表具有相同架构的新表。类似的东西

CREATE TABLE t_prod LIKE t_dev;

如果 t_dev 是列存储表,则 t_prod 也是(它们的show create table 输出将相同)

【讨论】:

啊,谢谢!围绕这个逻辑构建一个 SQL 脚本比在 Python 中编排这个零碎的东西要容易得多。不过,我仍然会使用 Python 作为我的执行层。

以上是关于使用 Python 的 Sqlalchemy 和 Singlestore sql 创建类似于现有的表的主要内容,如果未能解决你的问题,请参考以下文章

Python flask-sqlalchemy初级解析

Python开发:ORM sqlalchemy

python+ sqlalchemy实现orm创建表和查询操作

使用 SQLAlchemy 和 Pandas 插入数据 - Python

Python学习 Day17 Python对Mysql操作和使用ORM框架(SQLAlchemy)

python-sqlalchemy安装各种细节