Thay đổi tên bảng mysql

Để tạo phiên bản Amazon RDS cho cơ sở dữ liệu MySQL, hãy sử dụng giao diện hoặc công cụ quản lý Amazon RDS. Sau đó, bạn có thể làm như sau

  • Thay đổi kích thước phiên bản DB của bạn

  • Cấp phép kết nối với phiên bản CSDL của bạn

  • Tạo và khôi phục từ bản sao lưu hoặc ảnh chụp nhanh

  • Tạo phần phụ Multi-AZ

  • Tạo bản sao chỉ có quyền đọc

  • Theo dõi hiệu suất của phiên bản CSDL của bạn

Để lưu trữ và truy cập dữ liệu trong phiên bản CSDL của bạn, bạn sử dụng các tiện ích và ứng dụng MySQL tiêu chuẩn

Amazon RDS for MySQL tuân thủ nhiều tiêu chuẩn ngành. Ví dụ: bạn có thể sử dụng RDS cho cơ sở dữ liệu MySQL để xây dựng các ứng dụng tuân thủ HIPAA. Bạn có thể sử dụng cơ sở dữ liệu RDS cho MySQL để lưu trữ thông tin liên quan đến chăm sóc sức khỏe, bao gồm thông tin sức khỏe được bảo vệ (PHI) theo Thỏa thuận liên kết kinh doanh (BAA) với AWS. Amazon RDS cho MySQL cũng đáp ứng các yêu cầu bảo mật của Chương trình quản lý ủy quyền và rủi ro liên bang (FedRAMP). Ngoài ra, Amazon RDS cho MySQL đã nhận được Cơ quan vận hành tạm thời (P-ATO) của Ủy ban ủy quyền chung FedRAMP (JAB) tại Đường cơ sở CAO của FedRAMP trong Khu vực AWS GovCloud (US). Để biết thêm thông tin về các tiêu chuẩn tuân thủ được hỗ trợ, hãy xem Tuân thủ đám mây AWS

Để biết thông tin về các tính năng trong mỗi phiên bản MySQL, hãy xem Các tính năng chính của MySQL trong tài liệu MySQL

Trước khi tạo phiên bản CSDL, hãy hoàn tất các bước trong Thiết lập cho Amazon RDS. Khi bạn tạo một phiên bản CSDL, người dùng chính RDS sẽ nhận được các đặc quyền của DBA, với một số hạn chế. Sử dụng tài khoản này cho các tác vụ quản trị, chẳng hạn như tạo tài khoản cơ sở dữ liệu bổ sung

Bạn có thể tạo như sau

  • Phiên bản CSDL

  • kết xuất nhanh cơ sở dữ liệu

  • Khôi phục tại thời điểm

  • sao lưu tự động

  • sao lưu thủ công

Bạn có thể sử dụng các phiên bản CSDL chạy MySQL bên trong đám mây riêng ảo (VPC) dựa trên Amazon VPC. Bạn cũng có thể thêm các tính năng vào phiên bản Cơ sở dữ liệu MySQL của mình bằng cách bật các tùy chọn khác nhau. Amazon RDS hỗ trợ triển khai Multi-AZ cho MySQL như một giải pháp chuyển đổi dự phòng, có tính sẵn sàng cao

Để mang lại trải nghiệm dịch vụ được quản lý, Amazon RDS không cung cấp quyền truy cập trình bao cho các phiên bản CSDL. Nó cũng hạn chế quyền truy cập vào một số quy trình và bảng hệ thống cần có đặc quyền nâng cao. Bạn có thể truy cập cơ sở dữ liệu của mình bằng các máy khách SQL tiêu chuẩn, chẳng hạn như máy khách mysql. Tuy nhiên, bạn không thể truy cập trực tiếp vào máy chủ bằng cách sử dụng Telnet hoặc Secure Shell (SSH)

là một đối tượng chứa chứa nhiều tính năng khác nhau của cơ sở dữ liệu (hoặc nhiều cơ sở dữ liệu) đang được mô tả

Để đại diện cho một bảng, sử dụng lớp. Hai đối số chính của nó là tên bảng, sau đó là đối tượng mà nó sẽ được liên kết với. Các đối số vị trí còn lại chủ yếu là các đối tượng mô tả từng cột

Ở trên, một bảng có tên là

>>> print(select(financial_info))
SELECT remote_banks.financial_info.id, remote_banks.financial_info.value
FROM remote_banks.financial_info
3 được mô tả, trong đó có bốn cột. Khóa chính của bảng bao gồm cột
>>> print(select(financial_info))
SELECT remote_banks.financial_info.id, remote_banks.financial_info.value
FROM remote_banks.financial_info
4. Nhiều cột có thể được gán cờ
>>> print(select(financial_info))
SELECT remote_banks.financial_info.id, remote_banks.financial_info.value
FROM remote_banks.financial_info
5 biểu thị khóa chính nhiều cột, được gọi là khóa chính tổng hợp

Cũng lưu ý rằng mỗi cột mô tả kiểu dữ liệu của nó bằng cách sử dụng các đối tượng tương ứng với các kiểu được tổng quát hóa, chẳng hạn như và. SQLAlchemy có hàng tá loại với mức độ cụ thể khác nhau cũng như khả năng tạo các loại tùy chỉnh. Tài liệu về hệ thống loại có thể được tìm thấy tại SQL Datatype Objects

Chỉ định tên lược đồ

Hầu hết các cơ sở dữ liệu đều hỗ trợ khái niệm về nhiều “lược đồ” - không gian tên đề cập đến các bộ bảng thay thế và các cấu trúc khác. Hình học phía máy chủ của một “lược đồ” có nhiều dạng, bao gồm tên của “lược đồ” trong phạm vi của một cơ sở dữ liệu cụ thể (e. g. lược đồ PostgreSQL), cơ sở dữ liệu anh chị em được đặt tên (e. g. MySQL/MariaDB truy cập vào các cơ sở dữ liệu khác trên cùng một máy chủ), cũng như các khái niệm khác như các bảng thuộc sở hữu của các tên người dùng khác (Oracle, SQL Server) hoặc thậm chí các tên đề cập đến các tệp cơ sở dữ liệu thay thế (SQLite ATTACH) hoặc các máy chủ từ xa (Oracle DBLINK với

Điểm chung của tất cả các cách tiếp cận trên (hầu hết) là có một cách đề cập đến tập hợp bảng thay thế này bằng cách sử dụng tên chuỗi. SQLAlchemy gọi tên này là tên lược đồ. Trong SQLAlchemy, đây không gì khác hơn là một tên chuỗi được liên kết với một đối tượng và sau đó được kết xuất thành các câu lệnh SQL theo cách phù hợp với cơ sở dữ liệu đích sao cho bảng được tham chiếu tới trong “lược đồ” từ xa của nó, bất kỳ cơ chế nào

Tên "lược đồ" có thể được liên kết trực tiếp với đối số sử dụng;

Tên "lược đồ" cũng có thể được liên kết với đối tượng nơi nó sẽ tự động có hiệu lực đối với tất cả các đối tượng được liên kết với đối tượng không chỉ định tên riêng của chúng. Cuối cùng, SQLAlchemy cũng hỗ trợ một hệ thống tên lược đồ “động” thường được sử dụng cho các ứng dụng nhiều đối tượng thuê sao cho một bộ siêu dữ liệu duy nhất có thể đề cập đến một bộ tên lược đồ được định cấu hình động trên cơ sở mỗi kết nối hoặc mỗi câu lệnh

Ví dụ cơ bản nhất là đối số sử dụng đối tượng Core như sau

metadata_obj = MetaData()

financial_info = Table(
    "financial_info",
    metadata_obj,
    Column("id", Integer, primary_key=True),
    Column("value", String(100), nullable=False),
    schema="remote_banks",
)

SQL được hiển thị bằng cách sử dụng this , chẳng hạn như câu lệnh SELECT bên dưới, sẽ đủ điều kiện rõ ràng cho tên bảng

>>> metadata_obj.tables["remote_banks.financial_info"]
Table('financial_info', MetaData(),
Column('id', Integer(), table=, primary_key=True, nullable=False),
Column('value', String(length=100), table=, nullable=False),
schema='remote_banks')
9 với tên lược đồ
customer = Table(
    "customer",
    metadata_obj,
    Column("id", Integer, primary_key=True),
    Column("financial_info_id", ForeignKey("remote_banks.financial_info.id")),
    schema="remote_banks",
)
0

>>> print(select(financial_info))
SELECT remote_banks.financial_info.id, remote_banks.financial_info.value
FROM remote_banks.financial_info

Khi một đối tượng được khai báo với một tên lược đồ rõ ràng, nó sẽ được lưu trữ trong không gian tên nội bộ bằng cách sử dụng kết hợp giữa lược đồ và tên bảng. Chúng tôi có thể xem cái này trong bộ sưu tập bằng cách tìm kiếm khóa

customer = Table(
    "customer",
    metadata_obj,
    Column("id", Integer, primary_key=True),
    Column("financial_info_id", ForeignKey("remote_banks.financial_info.id")),
    schema="remote_banks",
)
4

>>> metadata_obj.tables["remote_banks.financial_info"]
Table('financial_info', MetaData(),
Column('id', Integer(), table=, primary_key=True, nullable=False),
Column('value', String(length=100), table=, nullable=False),
schema='remote_banks')

Tên chấm này cũng là tên phải được sử dụng khi tham chiếu đến bảng để sử dụng với các đối tượng hoặc, ngay cả khi bảng tham chiếu cũng nằm trong cùng lược đồ đó

customer = Table(
    "customer",
    metadata_obj,
    Column("id", Integer, primary_key=True),
    Column("financial_info_id", ForeignKey("remote_banks.financial_info.id")),
    schema="remote_banks",
)

Đối số cũng có thể được sử dụng với một số phương ngữ nhất định để biểu thị nhiều mã thông báo (e. g. chấm) đường dẫn đến một bảng cụ thể. Điều này đặc biệt quan trọng trên cơ sở dữ liệu chẳng hạn như Microsoft SQL Server, nơi thường có các mã thông báo "cơ sở dữ liệu/chủ sở hữu" được chấm. Các mã thông báo có thể được đặt trực tiếp vào tên cùng một lúc, chẳng hạn như

Chỉ định Tên lược đồ mặc định với MetaData

Đối tượng cũng có thể thiết lập tùy chọn mặc định rõ ràng cho tất cả các tham số bằng cách chuyển đối số tới cấu trúc cấp cao nhất

metadata_obj = MetaData(schema="remote_banks")

financial_info = Table(
    "financial_info",
    metadata_obj,
    Column("id", Integer, primary_key=True),
    Column("value", String(100), nullable=False),
)

Ở trên, đối với bất kỳ đối tượng nào (hoặc đối tượng được liên kết trực tiếp với ) để tham số ở giá trị mặc định là

metadata_obj = MetaData(schema="remote_banks")

financial_info = Table(
    "financial_info",
    metadata_obj,
    Column("id", Integer, primary_key=True),
    Column("value", String(100), nullable=False),
)
6 thay vào đó sẽ hoạt động như thể tham số được đặt thành giá trị
metadata_obj = MetaData(schema="remote_banks")

financial_info = Table(
    "financial_info",
    metadata_obj,
    Column("id", Integer, primary_key=True),
    Column("value", String(100), nullable=False),
)
7. Điều này bao gồm việc được lập danh mục bằng cách sử dụng tên đủ điều kiện lược đồ, đó là

metadata_obj.tables["remote_banks.financial_info"]

Khi sử dụng các đối tượng hoặc để tham chiếu đến bảng này, có thể sử dụng tên đủ điều kiện lược đồ hoặc tên không đủ điều kiện lược đồ để tham chiếu đến bảng

metadata_obj.tables["remote_banks.financial_info"]
2

# either will work:

refers_to_financial_info = Table(
    "refers_to_financial_info",
    metadata_obj,
    Column("id", Integer, primary_key=True),
    Column("fiid", ForeignKey("financial_info.id")),
)


# or

refers_to_financial_info = Table(
    "refers_to_financial_info",
    metadata_obj,
    Column("id", Integer, primary_key=True),
    Column("fiid", ForeignKey("remote_banks.financial_info.id")),
)

Khi sử dụng một đối tượng set , a muốn chỉ định rằng nó không phải là lược đồ đủ điều kiện có thể sử dụng ký hiệu đặc biệt

metadata_obj.tables["remote_banks.financial_info"]
6

from sqlalchemy import BLANK_SCHEMA

metadata_obj = MetaData(schema="remote_banks")

financial_info = Table(
    "financial_info",
    metadata_obj,
    Column("id", Integer, primary_key=True),
    Column("value", String(100), nullable=False),
    schema=BLANK_SCHEMA,  # will not use "remote_banks"
)

Áp dụng quy ước đặt tên lược đồ động

Các tên được tham số sử dụng cũng có thể được áp dụng cho một tra cứu động trên cơ sở mỗi kết nối hoặc mỗi lần thực thi, để ví dụ như trong các tình huống nhiều bên thuê, mỗi giao dịch hoặc câu lệnh có thể được nhắm mục tiêu vào một tập hợp lược đồ cụ thể . Phần mô tả cách tính năng này được sử dụng

Đặt lược đồ mặc định cho các kết nối mới

Tất cả các cách tiếp cận trên đều đề cập đến các phương pháp bao gồm một tên lược đồ rõ ràng trong các câu lệnh SQL. Trên thực tế, các kết nối cơ sở dữ liệu có khái niệm về lược đồ “mặc định”, là tên của “lược đồ” (hoặc cơ sở dữ liệu, chủ sở hữu, v.v. ) diễn ra nếu tên bảng không đủ điều kiện lược đồ một cách rõ ràng. Những tên này thường được định cấu hình ở cấp độ đăng nhập, chẳng hạn như khi kết nối với cơ sở dữ liệu PostgreSQL, “lược đồ” mặc định được gọi là “công khai”

Thường có những trường hợp không thể đặt “lược đồ” mặc định thông qua chính thông tin đăng nhập và thay vào đó sẽ được định cấu hình một cách hữu ích mỗi khi tạo kết nối, sử dụng một câu lệnh chẳng hạn như “SET SEARCH_PATH” trên PostgreSQL hoặc “ALTER SESSION” trên Oracle. Những cách tiếp cận này có thể đạt được bằng cách sử dụng sự kiện

metadata_obj.tables["remote_banks.financial_info"]
8, cho phép truy cập vào kết nối DBAPI khi nó được tạo lần đầu tiên. Ví dụ: để đặt biến Oracle CURRENT_SCHEMA thành tên thay thế

from sqlalchemy import event
from sqlalchemy import create_engine

engine = create_engine("oracle+cx_oracle://scott:tiger@tsn_name")


@event.listens_for(engine, "connect", insert=True)
def set_current_schema(dbapi_connection, connection_record):
    cursor_obj = dbapi_connection.cursor()
    cursor_obj.execute("ALTER SESSION SET CURRENT_SCHEMA=%s" % schema_name)
    cursor_obj.close()

Ở trên, trình xử lý sự kiện

metadata_obj.tables["remote_banks.financial_info"]
9 sẽ diễn ra ngay lập tức khi kết nối đầu tiên ở trên;

Đối với các cơ sở dữ liệu khác, hãy tham khảo cơ sở dữ liệu và/hoặc tài liệu phương ngữ để biết thông tin cụ thể về cách cấu hình các lược đồ mặc định

Thay đổi trong phiên bản 1. 4. 0b2. Công thức trên hiện hoạt động mà không cần thiết lập trình xử lý sự kiện bổ sung

Lược đồ và phản ánh

Tính năng lược đồ của SQLAlchemy tương tác với tính năng phản chiếu bảng được giới thiệu tại Phản chiếu đối tượng cơ sở dữ liệu. Xem phần để biết thêm chi tiết về cách thức hoạt động của nó