如何使用SQLAlchemy创建分区?

问题描述 投票:1回答:1

所以我是SQL alchemy的新手,想看看如何在列上创建分区,但是我找不到sqlalchemy的任何东西。例如,如果我有以下SQL语法

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30)
    job_code INT NOT NULL,
    store_id INT NOT NULL
)
PARTITION BY RANGE (store_id) (
    PARTITION p0 VALUES LESS THAN (6),
    PARTITION p1 VALUES LESS THAN (11),
    PARTITION p2 VALUES LESS THAN (16),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

并且我通过sqlalchemy创建了一个表,如下所示:

class Employee(Base):
      __tablename__ = "employee"
      __table_args__ = {'mysql_engine': 'InnoDB'}

      emp_id = Column(Integer, nullable=False)
      fname = Column(String,  nullable=False)
      lname = Column(String,  nullable=False)
      job_code = Column(Integer, nullable=False)
      store_id = Column(Integer, nullable=False)

如何在上述sqlalchemy代码中实现分区?

python sql database sqlalchemy
1个回答
0
投票

您可以使用sqlalchemy执行原始SQL。

from sqlalchemy.ext.declarative import create_engine


connection_string = 'mysql://user:password@host/database'
engine = create_engine(connection_string)
create_partitions = """
ALTER TABLE employee
  PARTITION BY RANGE (store_id) (
    PARTITION p0 VALUES LESS THAN (6),
    PARTITION p1 VALUES LESS THAN (11),
    PARTITION p2 VALUES LESS THAN (16),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);"""

我假设您正在使用MySQL,如果是这样,则需要确保主键包含用于分区的所有列。否则,请适当更改连接字符串。

edit: Michael Bayer提供了一种在sqlalchemy表定义here中创建分区的解决方案。该解决方案实质上是将分区参数添加到表定义语法中。

© www.soinside.com 2019 - 2024. All rights reserved.