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 Show
Để 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
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_info3 đượ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_info4. 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_info5 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 đồ độngCá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ớiTấ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 ánhTí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ó |