使用 Python 的 Sqlalchemy 和 Singlestore sql 创建类似于现有的表
Create tables similar to existing using Python's Sqlalchemy and Singlestore sql
我在单一存储数据库中有一组现有的 table,其中许多是列存储 table。
我想构建一个 python 脚本,用于将我的开发 table 迁移到生产 table 中。 dev tables 已经构建、分析并与现有 tables 进行比较,但我不想硬编码 sql 脚本来用 dev 替换现有的 prod tables,我想要执行此操作的可靠 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 table 具有与 Dev table、[=22 相同的结构和数据类型=]while 保留列存储功能(其中一些数据集将有数百万条记录,而且我对 table 这么大的默认行存储有业务限制)。
我不太了解 sqlalchemy,但您可以使用 CREATE TABLE LIKE
创建一个新的 table,其架构与现有 table 相同。像
CREATE TABLE t_prod LIKE t_dev;
如果 t_dev 是列存储 table,t_prod 也将是(它们的 show create table
输出将相同)
我在单一存储数据库中有一组现有的 table,其中许多是列存储 table。
我想构建一个 python 脚本,用于将我的开发 table 迁移到生产 table 中。 dev tables 已经构建、分析并与现有 tables 进行比较,但我不想硬编码 sql 脚本来用 dev 替换现有的 prod tables,我想要执行此操作的可靠 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 table 具有与 Dev table、[=22 相同的结构和数据类型=]while 保留列存储功能(其中一些数据集将有数百万条记录,而且我对 table 这么大的默认行存储有业务限制)。
我不太了解 sqlalchemy,但您可以使用 CREATE TABLE LIKE
创建一个新的 table,其架构与现有 table 相同。像
CREATE TABLE t_prod LIKE t_dev;
如果 t_dev 是列存储 table,t_prod 也将是(它们的 show create table
输出将相同)