使用 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+ sqlalchemy实现orm创建表和查询操作
使用 SQLAlchemy 和 Pandas 插入数据 - Python