Cơ sở dữ liệu, bảng, chỉ mục, cột, bí danh, dạng xem, quy trình được lưu trữ, trình kích hoạt, sự kiện, biến, phân vùng, không gian bảng, điểm lưu trữ, nhãn, người dùng, vai trò, được gọi chung là số nhận dạng và có các quy tắc đặt tên nhất định
Định danh có thể được trích dẫn bằng cách sử dụng ký tự backtick -
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+95. Trích dẫn là tùy chọn đối với số nhận dạng không chứa ký tự đặc biệt hoặc đối với số nhận dạng không phải là từ dành riêng. Nếu cờ ____ 296 SQL_MODE được đặt, dấu ngoặc kép [________ 00] cũng có thể được sử dụng để trích dẫn định danh. Nếu cờ
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+1 được đặt, dấu ngoặc vuông [
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+2 và
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+3] có thể được sử dụng để trích dẫn
Ngay cả khi sử dụng các từ dành riêng làm tên, các tên đủ điều kiện không cần phải trích dẫn. Ví dụ:
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+4 chỉ có một nghĩa có thể, vì vậy nó được phân tích cú pháp chính xác ngay cả khi không có dấu ngoặc kép
không trích dẫn
Các ký tự sau hợp lệ và cho phép các mã định danh không được trích dẫn
- ASCII. [0-9,a-z,A-Z$_] [chữ số 0-9, chữ cái Latinh cơ bản, cả chữ thường và chữ hoa, ký hiệu đô la, dấu gạch dưới]
- Mở rộng. U+0080. U+FFFF
trích dẫn
Các ký tự sau hợp lệ, nhưng số nhận dạng sử dụng chúng phải được trích dẫn
- ASCII. U+0001. U+007F [Mặt phẳng đa ngôn ngữ cơ bản đầy đủ Unicode [BMP] ngoại trừ U+0000]
- Mở rộng. U+0080. U+FFFF
- Bản thân các trích dẫn định danh có thể được sử dụng như một phần của định danh, miễn là chúng được trích dẫn
Quy tắc khác
Có một số quy tắc khác cho định danh
- Mã định danh được lưu trữ dưới dạng Unicode [UTF-8]
- Định danh có thể hoặc không thể phân biệt chữ hoa chữ thường. Xem Mã định danh Phân biệt chữ hoa chữ thường
- Tên cơ sở dữ liệu, bảng và cột không được kết thúc bằng ký tự khoảng trắng
- Tên định danh có thể bắt đầu bằng một chữ số, nhưng không thể chỉ chứa các chữ số trừ khi được trích dẫn
- Mã định danh bắt đầu bằng chữ số, theo sau là 'e', có thể được phân tích cú pháp dưới dạng số dấu phẩy động và cần được trích dẫn
- Số nhận dạng không được phép chứa ký tự ASCII NUL [U+0000] và các ký tự bổ sung [U+10000 trở lên]
- Những tên như 5e6, 9e không bị cấm, nhưng chúng tôi khuyên bạn không nên sử dụng chúng vì chúng có thể dẫn đến sự mơ hồ trong một số ngữ cảnh nhất định, được coi là một số hoặc biểu thức
- Biến người dùng không thể được sử dụng như một phần của mã định danh hoặc làm mã định danh trong câu lệnh SQL
trích dẫn nhân vật
Ký tự trích dẫn thông thường là ký tự đánh dấu ngược -
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+95, nhưng nếu tùy chọn SQL_MODE ____________ được chỉ định, thì một trích dẫn kép thông thường -
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+0 cũng có thể được sử dụng
Ký tự backtick có thể được sử dụng như một phần của mã định danh. Trong trường hợp đó, số nhận dạng cần được trích dẫn. Ký tự trích dẫn có thể là dấu gạch ngược, nhưng trong trường hợp đó, dấu gạch ngược trong tên phải được thoát bằng một dấu gạch ngược khác
Chiều dài tối đa
- Cơ sở dữ liệu, bảng, cột, chỉ mục, ràng buộc, quy trình được lưu trữ, trình kích hoạt, sự kiện, dạng xem, không gian bảng, máy chủ và nhóm tệp nhật ký có độ dài tối đa là 64 ký tự
- Nhãn câu lệnh ghép có độ dài tối đa là 16 ký tự
- Bí danh có độ dài tối đa là 256 ký tự, ngoại trừ bí danh cột trong câu lệnh CREATE VIEW, được kiểm tra dựa trên độ dài cột tối đa là 64 ký tự [không phải độ dài bí danh tối đa là 256 ký tự]
- Người dùng có độ dài tối đa là 80 ký tự
- Vai trò có độ dài tối đa là 128 ký tự
- Các ký tự nhiều byte không được tính thêm vào giới hạn ký tự
Nhiều định danh
MariaDB cho phép tên cột được sử dụng riêng nếu tham chiếu rõ ràng hoặc tên bảng được sử dụng với tên cột hoặc cả ba tên cơ sở dữ liệu, bảng và tên cột. Dấu chấm được sử dụng để phân tách các mã định danh và dấu chấm có thể được bao quanh bởi khoảng trắng
Các tùy chọn phương ngữ/DBAPI sau đây khả dụng. Vui lòng tham khảo các phần DBAPI riêng lẻ để biết thông tin kết nối
Các phiên bản và tính năng được hỗ trợ
SQLAlchemy hỗ trợ MySQL bắt đầu từ phiên bản 5. 0. 2 đến các bản phát hành hiện đại, cũng như tất cả các phiên bản hiện đại của MariaDB. Xem tài liệu MySQL chính thức để biết thông tin chi tiết về các tính năng được hỗ trợ trong bất kỳ bản phát hành máy chủ cụ thể nào
Thay đổi trong phiên bản 1. 4. phiên bản MySQL tối thiểu được hỗ trợ hiện là 5. 0. 2
Hỗ trợ MariaDB
Biến thể MariaDB của MySQL vẫn duy trì khả năng tương thích cơ bản với các giao thức của MySQL, tuy nhiên sự phát triển của hai sản phẩm này tiếp tục khác nhau. Trong lĩnh vực SQLAlchemy, hai cơ sở dữ liệu có một số khác biệt nhỏ về hành vi và cú pháp mà SQLAlchemy tự động điều chỉnh. Để kết nối với cơ sở dữ liệu MariaDB, không cần thay đổi URL cơ sở dữ liệu
engine = create_engine["mysql+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
Khi kết nối lần đầu, phương ngữ SQLAlchemy sử dụng lược đồ phát hiện phiên bản máy chủ để xác định xem cơ sở dữ liệu sao lưu có báo cáo là MariaDB hay không. Dựa trên cờ này, phương ngữ có thể đưa ra các lựa chọn khác nhau ở những khu vực mà hành vi của nó phải khác
Chế độ chỉ dành cho MariaDB
Phương ngữ này cũng hỗ trợ chế độ kết nối “chỉ dành cho MariaDB” tùy chọn, có thể hữu ích trong trường hợp ứng dụng sử dụng các tính năng dành riêng cho MariaDB và không tương thích với cơ sở dữ liệu MySQL. Để sử dụng phương thức hoạt động này, hãy thay thế mã thông báo “mysql” trong URL trên bằng “mariadb”
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
Công cụ trên, trong lần kết nối đầu tiên, sẽ phát sinh lỗi nếu tính năng phát hiện phiên bản máy chủ phát hiện ra rằng cơ sở dữ liệu sao lưu không phải là MariaDB
Khi sử dụng một công cụ có tên phương ngữ là
Table['mytable', metadata, Column['data', String[32]], mysql_engine='InnoDB', mysql_charset='utf8mb4', mysql_key_block_size="1024" ]8, tất cả các tùy chọn dành riêng cho mysql bao gồm tên “mysql” trong chúng hiện được đặt tên bằng “mariadb”. Điều này có nghĩa là các tùy chọn như
Table['mytable', metadata, Column['data', String[32]], mysql_engine='InnoDB', mysql_charset='utf8mb4', mysql_key_block_size="1024" ]9 nên được đặt tên là
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+00, v.v. Cả hai tùy chọn “mysql” và “mariadb” đều có thể được sử dụng đồng thời cho các ứng dụng sử dụng URL có cả hai phương ngữ “mysql” và “mariadb”
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+1
Hành vi tương tự sẽ xảy ra khi các cấu trúc trên được phản ánh, tôi. e. tiền tố “mariadb” sẽ xuất hiện trong tên tùy chọn khi URL cơ sở dữ liệu dựa trên tên “mariadb”
Mới trong phiên bản 1. 4. Đã thêm tên phương ngữ “mariadb” hỗ trợ “chế độ chỉ dành cho MariaDB” cho phương ngữ MySQL
Hết thời gian kết nối và ngắt kết nối
MySQL/MariaDB có hành vi đóng kết nối tự động, dành cho các kết nối không hoạt động trong một khoảng thời gian cố định, mặc định là tám giờ. Để khắc phục sự cố này, hãy sử dụng tùy chọn
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+01 để đảm bảo rằng một kết nối sẽ bị hủy và thay thế bằng một kết nối mới nếu nó đã xuất hiện trong nhóm trong một số giây cố định
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+3
Để phát hiện ngắt kết nối toàn diện hơn của các kết nối gộp, bao gồm chỗ ở của máy chủ khởi động lại và các sự cố mạng, phương pháp ping trước có thể được sử dụng. Xem Xử lý Ngắt kết nối để biết các phương pháp hiện tại
Xem thêm
Xử lý Ngắt kết nối - Cơ sở về một số kỹ thuật để xử lý các kết nối đã hết thời gian chờ cũng như khởi động lại cơ sở dữ liệu
TẠO các đối số BẢNG bao gồm Công cụ lưu trữ
Cả cú pháp CREATE TABLE của MySQL và MariaDB bao gồm một loạt các tùy chọn đặc biệt, bao gồm
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+02,
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+03,
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+04,
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+05,
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+06, v.v. Để phù hợp với việc hiển thị các đối số này, hãy chỉ định biểu mẫu
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+07. Ví dụ: để chỉ định một bảng có
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+02 của
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+09,
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+03 của
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+31 và
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+32 của
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+33
________số 8
Khi hỗ trợ chế độ MariaDB-Only Mode, cũng phải bao gồm các khóa tương tự đối với tiền tố “mariadb”. Tất nhiên, các giá trị có thể thay đổi độc lập để các cài đặt khác nhau trên MySQL so với. MariaDB có thể được duy trì
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+0
Các phương ngữ MySQL/MariaDB thường sẽ chuyển bất kỳ từ khóa nào được chỉ định là
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+34 để được hiển thị là
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+35 trong câu lệnh
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+36. Một số tên trong số này sẽ hiển thị bằng dấu cách thay vì dấu gạch dưới; . g.
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+38],
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+39 [e. g.
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+40] và
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+41 [e. g.
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+42]
Đối số phổ biến nhất là
Table['mytable', metadata, Column['data', String[32]], mysql_engine='InnoDB', mysql_charset='utf8mb4', mysql_key_block_size="1024" ]9, đề cập đến công cụ lưu trữ cho bảng. Trước đây, cài đặt máy chủ MySQL sẽ mặc định là
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+44 cho giá trị này, mặc dù các phiên bản mới hơn có thể được mặc định là
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+09. Công cụ
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+09 thường được ưa thích vì hỗ trợ các giao dịch và khóa ngoại
Một
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+47 được tạo trong cơ sở dữ liệu MySQL/MariaDB với công cụ lưu trữ của
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+44 về cơ bản sẽ không mang tính giao dịch, nghĩa là bất kỳ câu lệnh CHÈN/CẬP NHẬT/XÓA nào đề cập đến bảng này sẽ được gọi dưới dạng tự động cam kết. Nó cũng sẽ không hỗ trợ các ràng buộc khóa ngoại; . Phản ánh một bảng như vậy cũng sẽ không tạo ra thông tin ràng buộc khóa ngoại
Đối với các giao dịch nguyên tử hoàn toàn cũng như hỗ trợ các ràng buộc khóa ngoại, tất cả các câu lệnh
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+36 tham gia phải chỉ định một công cụ giao dịch, trong phần lớn các trường hợp là
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+09
Phân biệt chữ hoa chữ thường và phản chiếu bảng
Cả MySQL và MariaDB đều có hỗ trợ không nhất quán cho các tên định danh phân biệt chữ hoa chữ thường, hỗ trợ dựa trên các chi tiết cụ thể của hệ điều hành cơ bản. Tuy nhiên, người ta đã quan sát thấy rằng bất kể hành vi phân biệt chữ hoa chữ thường nào xuất hiện, tên của các bảng trong khai báo khóa ngoại luôn được nhận từ cơ sở dữ liệu dưới dạng chữ thường, khiến cho không thể phản ánh chính xác lược đồ nơi các bảng liên quan đến nhau sử dụng
Do đó, chúng tôi đặc biệt khuyên rằng các tên bảng được khai báo là tất cả chữ thường cả trong SQLAlchemy cũng như trên chính cơ sở dữ liệu MySQL/MariaDB, đặc biệt nếu các tính năng phản chiếu cơ sở dữ liệu sẽ được sử dụng
Mức cô lập giao dịch
Tất cả các phương ngữ MySQL/MariaDB đều hỗ trợ cài đặt mức cô lập giao dịch thông qua tham số dành riêng cho phương ngữ
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+73 được chấp nhận bởi
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+74, cũng như đối số
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+75 được chuyển cho
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+76. Tính năng này hoạt động bằng cách đưa ra lệnh
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+77 cho mỗi kết nối mới. Đối với mức cô lập AUTOCOMMIT đặc biệt, các kỹ thuật dành riêng cho DBAPI được sử dụng
Để đặt mức cô lập bằng cách sử dụng
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+74
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+3
Để đặt sử dụng các tùy chọn thực thi trên mỗi kết nối
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+4
Các giá trị hợp lệ cho
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+79 bao gồm
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
60SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
61SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
62SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
63SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
64
Giá trị đặc biệt
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+64 sử dụng các thuộc tính “autocommit” khác nhau được cung cấp bởi các DBAPI cụ thể và hiện được hỗ trợ bởi MySQLdb, MySQL-Client, MySQL-Connector Python và PyMySQL. Sử dụng nó, kết nối cơ sở dữ liệu sẽ trả về true với giá trị của
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+66
Ngoài ra còn có nhiều tùy chọn hơn cho cấu hình mức cách ly, chẳng hạn như các đối tượng “công cụ phụ” được liên kết với một
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+67 chính, mỗi đối tượng áp dụng các cài đặt mức cách ly khác nhau. Xem cuộc thảo luận tại Đặt mức cô lập giao dịch bao gồm Tự động cam kết DBAPI để biết thông tin cơ bản
AUTO_INCREMENT Hành vi
Khi tạo bảng, SQLAlchemy sẽ tự động đặt
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+68 trên cột khóa chính
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+69 đầu tiên không được đánh dấu là khóa ngoại
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+7
Bạn có thể vô hiệu hóa hành vi này bằng cách chuyển
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]00 đến đối số
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]01 của
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]02. Cờ này cũng có thể được sử dụng để bật tự động tăng trên cột phụ trong khóa nhiều cột cho một số công cụ lưu trữ
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+6
Con trỏ phía máy chủ
Hỗ trợ con trỏ phía máy chủ có sẵn cho các phương ngữ mysqlclient, PyMySQL, mariadbconnector và cũng có thể có sẵn ở các phương ngữ khác. Điều này sử dụng cờ “buffered=True/False” nếu có hoặc bằng cách sử dụng một lớp như
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]03 hoặc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]04 trong nội bộ
Con trỏ phía máy chủ được bật trên cơ sở mỗi câu lệnh bằng cách sử dụng tùy chọn thực thi kết nối
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]05
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]0
Lưu ý rằng một số loại câu lệnh SQL có thể không được hỗ trợ với con trỏ phía máy chủ;
bảng chữ cái
Lựa chọn bộ ký tự
Hầu hết các DBAPI của MySQL/MariaDB đều cung cấp tùy chọn đặt bộ ký tự máy khách cho kết nối. Điều này thường được phân phối bằng cách sử dụng thông số
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]06 trong URL, chẳng hạn như
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]1
Bộ ký tự này là bộ ký tự máy khách cho kết nối. Một số MySQL DBAPI sẽ mặc định giá trị này thành một giá trị chẳng hạn như
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]07 và một số cũng sẽ sử dụng cài đặt
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]08 trong tệp
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]09. Tài liệu cho DBAPI đang sử dụng nên được tư vấn cho hành vi cụ thể
Mã hóa được sử dụng cho Unicode theo truyền thống là
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]10. Tuy nhiên, đối với phiên bản MySQL 5. 5. 3 và MariaDB 5. 5 trở đi, mã hóa dành riêng cho MySQL mới
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]11 đã được giới thiệu và kể từ MySQL 8. 0 một cảnh báo được máy chủ phát ra nếu
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]12 đơn giản được chỉ định trong bất kỳ chỉ thị phía máy chủ nào, được thay thế bằng
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]13. Cơ sở lý luận cho mã hóa mới này là do mã hóa utf-8 kế thừa của MySQL chỉ hỗ trợ các điểm mã tối đa ba byte thay vì bốn. Do đó, khi giao tiếp với cơ sở dữ liệu MySQL hoặc MariaDB bao gồm các điểm mã có kích thước lớn hơn ba byte, bộ ký tự mới này được ưu tiên hơn, nếu được hỗ trợ bởi cả cơ sở dữ liệu cũng như DBAPI của máy khách, như trong
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]1
Tất cả các DBAPI hiện đại phải hỗ trợ bộ ký tự
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+31
Để sử dụng mã hóa
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+31 cho lược đồ đã được tạo bằng
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]12 kế thừa, có thể cần phải thay đổi lược đồ MySQL/MariaDB và/hoặc cấu hình máy chủ
Xử lý cảnh báo dữ liệu nhị phân và Unicode
Phiên bản MySQL 5. 6, 5. 7 trở lên [không phải MariaDB tại thời điểm viết bài này] hiện đưa ra cảnh báo khi cố gắng chuyển dữ liệu nhị phân tới cơ sở dữ liệu, trong khi mã hóa bộ ký tự cũng được áp dụng, khi chính dữ liệu nhị phân không hợp lệ cho mã hóa đó
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]3
Cảnh báo này là do thư viện máy khách MySQL đang cố diễn giải chuỗi nhị phân dưới dạng đối tượng unicode ngay cả khi kiểu dữ liệu như
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]17 đang được sử dụng. Để giải quyết vấn đề này, câu lệnh SQL yêu cầu phải có một "bộ giới thiệu bộ ký tự" nhị phân trước bất kỳ giá trị không phải NULL nào hiển thị như thế này
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]4
Các bộ giới thiệu bộ ký tự này được trình điều khiển DBAPI cung cấp, giả sử sử dụng mysqlclient hoặc PyMySQL [cả hai đều được khuyến nghị]. Thêm tham số chuỗi truy vấn
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]18 vào URL để sửa cảnh báo này
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]5
Cờ
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]19 có thể được hoặc không được hỗ trợ bởi các trình điều khiển MySQL khác
Bản thân SQLAlchemy không thể hiển thị tiền tố
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]20 này một cách đáng tin cậy, vì nó không hoạt động với giá trị NULL, giá trị hợp lệ để được gửi dưới dạng tham số ràng buộc. Vì trình điều khiển MySQL hiển thị các tham số trực tiếp vào chuỗi SQL, nên đây là nơi hiệu quả nhất để chuyển từ khóa bổ sung này
Kiểu trích dẫn ANSI
MySQL / MariaDB có hai loại định danh "kiểu trích dẫn", một loại sử dụng dấu gạch ngược và loại kia sử dụng dấu ngoặc kép, e. g.
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]21 so với.
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]22. Tất cả các phương ngữ MySQL phát hiện phiên bản nào đang được sử dụng bằng cách kiểm tra giá trị của sql_mode khi kết nối được thiết lập lần đầu với một
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+67 cụ thể. Kiểu trích dẫn này phát huy tác dụng khi hiển thị tên bảng và cột cũng như khi phản ánh cấu trúc cơ sở dữ liệu hiện có. Quá trình phát hiện hoàn toàn tự động và không cần cấu hình đặc biệt để sử dụng kiểu trích dẫn
Thay đổi sql_mode
MySQL hỗ trợ hoạt động ở nhiều Chế độ SQL Máy chủ cho cả Máy chủ và Máy khách. Để thay đổi
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]24 cho một ứng dụng nhất định, nhà phát triển có thể tận dụng hệ thống Sự kiện của SQLAlchemy
Trong ví dụ sau, hệ thống sự kiện được sử dụng để đặt
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]24 trên các sự kiện
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]26 và
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]27
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]6
Trong ví dụ minh họa ở trên, sự kiện “kết nối” sẽ gọi câu lệnh “SET” trên kết nối tại thời điểm một kết nối DBAPI cụ thể được tạo lần đầu tiên cho một Nhóm nhất định, trước khi kết nối được cung cấp cho nhóm kết nối. Ngoài ra, vì chức năng đã được đăng ký với
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]28, nên nó sẽ được thêm vào danh sách nội bộ của các chức năng đã đăng ký
Phần mở rộng SQL MySQL / MariaDB
Nhiều phần mở rộng SQL của MySQL / MariaDB được xử lý thông qua chức năng chung của SQLAlchemy và hỗ trợ toán tử
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]7
Và tất nhiên, bất kỳ câu lệnh SQL hợp lệ nào cũng có thể được thực thi dưới dạng một chuỗi
Hiện có một số hỗ trợ trực tiếp hạn chế cho các phần mở rộng MySQL/MariaDB cho SQL
CHÈN/XÓA…TRẢ LẠI
Phương ngữ MariaDB hỗ trợ 10. 5+ của
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]29 và
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]30 [10. 0+] cú pháp.
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]29 có thể được sử dụng tự động trong một số trường hợp để tìm nạp các mã định danh mới được tạo thay cho cách tiếp cận truyền thống sử dụng
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]32, tuy nhiên, hiện tại,
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]32 vẫn được ưu tiên cho các trường hợp một câu lệnh đơn giản vì hiệu suất tốt hơn
Để chỉ định mệnh đề
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]34 rõ ràng, hãy sử dụng phương pháp
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]35 trên cơ sở từng câu lệnh
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]8
Mới trong phiên bản 2. 0. Đã thêm hỗ trợ cho MariaDB RETURNING
số lượng hàng
SQLAlchemy chuẩn hóa thuộc tính DBAPI
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]36 thành định nghĩa thông thường về “số lượng hàng khớp với câu lệnh CẬP NHẬT hoặc XÓA”. Điều này mâu thuẫn với cài đặt mặc định trên hầu hết các trình điều khiển MySQL DBAPI, đó là “số hàng thực sự được sửa đổi/xóa”. Vì lý do này, các phương ngữ MySQL của SQLAlchemy luôn thêm cờ
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]37 hoặc bất kỳ thứ gì tương đương với phương ngữ đích khi kết nối. Cài đặt này hiện được mã hóa cứng
MySQL / MariaDB- Tùy chọn chỉ mục cụ thể
Có sẵn các tiện ích mở rộng dành riêng cho MySQL và MariaDB cho cấu trúc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]38
Độ dài chỉ số
Cả MySQL và MariaDB đều cung cấp tùy chọn để tạo các mục nhập chỉ mục với độ dài nhất định, trong đó “độ dài” đề cập đến số lượng ký tự hoặc byte trong mỗi giá trị sẽ trở thành một phần của chỉ mục. SQLAlchemy cung cấp tính năng này thông qua các tham số
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]39 và/hoặc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]40
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]9
Độ dài tiền tố được cung cấp bằng ký tự cho các loại chuỗi không nhị phân và bằng byte cho các loại chuỗi nhị phân. Giá trị được truyền cho đối số từ khóa phải là một số nguyên [và do đó, chỉ định cùng một giá trị độ dài tiền tố cho tất cả các cột của chỉ mục] hoặc một lệnh trong đó các khóa là tên cột và giá trị là giá trị độ dài tiền tố cho các cột tương ứng. MySQL và MariaDB chỉ cho phép độ dài cho một cột của chỉ mục nếu nó dành cho CHAR, VARCHAR, TEXT, BINARY, VARBINARY và BLOB
Tiền tố chỉ mục
Công cụ lưu trữ MySQL cho phép bạn chỉ định tiền tố chỉ mục khi tạo chỉ mục. SQLAlchemy cung cấp tính năng này thông qua tham số
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]41 trên
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]38
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+10
Giá trị được chuyển đến đối số từ khóa sẽ được chuyển đơn giản đến CREATE INDEX bên dưới, do đó, nó phải là tiền tố chỉ mục hợp lệ cho công cụ lưu trữ MySQL của bạn
Các loại chỉ mục
Một số công cụ lưu trữ MySQL cho phép bạn chỉ định loại chỉ mục khi tạo ràng buộc chỉ mục hoặc khóa chính. SQLAlchemy cung cấp tính năng này thông qua tham số
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]43 trên
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]38
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+11
Cũng như tham số
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]43 trên
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]46
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+12
Giá trị được chuyển đến đối số từ khóa sẽ được chuyển đơn giản đến mệnh đề CREATE INDEX hoặc PRIMARY KEY bên dưới, do đó, nó phải là loại chỉ mục hợp lệ cho công cụ lưu trữ MySQL của bạn
Thông tin thêm có thể được tìm thấy tại
https. // nhà phát triển. mysql. com/doc/refman/5. 0/vi/tạo-chỉ mục. html
https. // nhà phát triển. mysql. com/doc/refman/5. 0/vi/tạo bảng. html
Trình phân tích cú pháp chỉ mục
TẠO CHỈ SỐ FULLTEXT trong MySQL cũng hỗ trợ tùy chọn “VỚI PARSER”. Điều này có sẵn bằng cách sử dụng đối số từ khóa
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]47
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+13
Khóa ngoại của MySQL/MariaDB
Hành vi của MySQL và MariaDB liên quan đến khóa ngoại có một số lưu ý quan trọng
Đối số khóa ngoại cần tránh
Cả MySQL và MariaDB đều không hỗ trợ các đối số khóa ngoại “DEFERRABLE”, “INITIALLY” hoặc “MATCH”. Sử dụng đối số từ khóa
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]48 hoặc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]49 với
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]50 hoặc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]51 sẽ có tác dụng khiến các từ khóa này được hiển thị trong biểu thức DDL, sau đó sẽ gây ra lỗi trên MySQL hoặc MariaDB. Để sử dụng các từ khóa này trên khóa ngoại trong khi chúng bị bỏ qua trên phần phụ trợ MySQL/MariaDB, hãy sử dụng quy tắc biên dịch tùy chỉnh
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+14
Từ khóa “MATCH” trên thực tế còn quỷ quyệt hơn và rõ ràng là không được SQLAlchemy cho phép kết hợp với các chương trình phụ trợ MySQL hoặc MariaDB. Đối số này bị MySQL/MariaDB âm thầm bỏ qua, nhưng ngoài ra, các tùy chọn BẬT CẬP NHẬT và BẬT XÓA cũng có tác dụng bị bỏ qua bởi chương trình phụ trợ. Do đó, MATCH không bao giờ được sử dụng với các chương trình phụ trợ MySQL/MariaDB;
Phản ánh các ràng buộc khóa ngoại
Không phải tất cả các công cụ lưu trữ MySQL/MariaDB đều hỗ trợ khóa ngoại. Khi sử dụng công cụ lưu trữ MySQL
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+44 rất phổ biến, thông tin được tải bằng cách phản chiếu bảng sẽ không bao gồm các khóa ngoại. Đối với các bảng này, bạn có thể cung cấp một
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]50 tại thời điểm phản ánh
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+15
Các ràng buộc và phản ánh duy nhất của MySQL / MariaDB
SQLAlchemy hỗ trợ cả cấu trúc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]38 với cờ
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]55, biểu thị chỉ mục ĐỘC ĐÁO, cũng như cấu trúc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]56, biểu thị ràng buộc ĐỘC ĐÁO. Cả hai đối tượng/cú pháp đều được MySQL/MariaDB hỗ trợ khi phát ra DDL để tạo các ràng buộc này. Tuy nhiên, MySQL/MariaDB không có cấu trúc ràng buộc duy nhất tách biệt với chỉ mục duy nhất;
Khi phản ánh các cấu trúc này, cả hai phương thức
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]57 và
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]58 sẽ trả về một mục nhập cho chỉ mục ĐỘC ĐÁO trong MySQL/MariaDB. Tuy nhiên, khi thực hiện phản ánh toàn bộ bảng bằng cách sử dụng
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]59, cấu trúc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]56 không phải là một phần của cấu trúc
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+47 được phản ánh đầy đủ trong bất kỳ trường hợp nào;
Cấu trúc MySQL SQL
Tên đối tượng Mô tảcuộc thi đấu
Tạo một mệnh đề
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]65lớp sqlalchemy. thổ ngữ. mysql. cuộc thi đấu
Tạo một mệnh đề
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]65
E. g
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+16
Sẽ tạo ra SQL giống như
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+17
Hàm
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]67 là một phiên bản độc lập của phương thức
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]68 có sẵn trên tất cả các biểu thức SQL, như khi sử dụng
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]68, nhưng cho phép chuyển nhiều cộtThông số
cols – biểu thức cột để khớp với
chống lại - biểu thức được so sánh với
in_boolean_mode – boolean, đặt “chế độ boolean” thành true
in_natural_language_mode – boolean , đặt “ngôn ngữ tự nhiên” thành true
with_query_expansion – boolean, đặt “mở rộng truy vấn” thành true
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]70in_boolean_mode[] → Selfmatch
Áp dụng công cụ sửa đổi “IN BOOLEAN MODE” cho biểu thức MATCH
trả lạimột phiên bản
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]71 mới với các sửa đổi được áp dụngphương pháp
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]70in_natural_language_mode[] → Selfmatch
Áp dụng công cụ sửa đổi “CHẾ ĐỘ NGÔN NGỮ TỰ NHIÊN” cho biểu thức MATCH
trả lạimột phiên bản
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]71 mới với các sửa đổi được áp dụngthuộc tính
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]70inherit_cache. Tùy chọn[bool] = True
Cho biết liệu phiên bản
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]75 này có nên sử dụng sơ đồ tạo khóa bộ đệm được sử dụng bởi siêu lớp trực tiếp của nó hay không
Thuộc tính mặc định là
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]76, chỉ ra rằng một cấu trúc chưa tính đến việc cấu trúc đó có phù hợp để tham gia vào bộ nhớ đệm hay không;
Cờ này có thể được đặt thành
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]78 trên một lớp cụ thể, nếu SQL tương ứng với đối tượng không thay đổi dựa trên các thuộc tính cục bộ của lớp này chứ không phải lớp cha của nóphương pháp
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]70with_query_expansion[] → Selfmatch
Áp dụng công cụ sửa đổi “VỚI MỞ RỘNG QUERY” cho biểu thức MATCH
trả lạimột phiên bản
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]71 mới với các sửa đổi được áp dụng
Các kiểu dữ liệu MySQL
Như với tất cả các phương ngữ SQLAlchemy, tất cả các loại UPPERCASE được biết là hợp lệ với MySQL đều có thể nhập được từ phương ngữ cấp cao nhất
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+18
Các loại dành riêng cho MySQL hoặc có các đối số xây dựng dành riêng cho MySQL, như sau
Tên đối tượng Mô tảLỚN
Loại BIGINTEGER của MySQL
CHÚT
Loại BIT của MySQL
CHAR
Loại CHAR của MySQL, dành cho dữ liệu ký tự có độ dài cố định
NGÀY GIỜ
Loại DATETIME của MySQL
SỐ THẬP PHÂN
Loại DECIMAL của MySQL
ENUM
Loại MySQL ENUM
TRÔI NỔI
Loại FLOAT của MySQL
số nguyên
Loại INTEGER của MySQL
JSON
Loại JSON của MySQL
LONGBLOB
Loại LONGBLOB của MySQL, cho dữ liệu nhị phân lên tới 2^32 byte
VĂN BẢN DÀI
Loại LONGTEXT của MySQL, cho văn bản tối đa 2^32 ký tự
VỪABLOB
Loại MEDIUMBLOB của MySQL, cho dữ liệu nhị phân lên tới 2^24 byte
TRUNG BÌNH
loại MySQL TRUNG BÌNH
TRUNG BÌNH
Loại MEDIUMTEXT của MySQL, cho văn bản tối đa 2^24 ký tự
NCHAR
Loại NCHAR của MySQL
SỐ
Loại SỐ MySQL
NVARCHAR
Loại NVARCHAR của MySQL
CÓ THẬT
Loại MySQL THỰC SỰ
BỐ TRÍ
MySQL SET loại
NHỎ
Loại SMALLINTEGER của MySQL
THỜI GIAN
Loại THỜI GIAN của MySQL
DẤU THỜI GIAN
Loại DẤU THỜI GIAN của MySQL
TINYBLOB
Loại TINYBLOB của MySQL, cho dữ liệu nhị phân lên tới 2^8 byte
TINYINT
Loại TINYINT của MySQL
TINYTEXT
Loại TINYTEXT của MySQL, cho văn bản tối đa 2^8 ký tự
VARCHAR
Loại VARCHAR của MySQL, cho dữ liệu ký tự có độ dài thay đổi
NĂM
Loại NĂM của MySQL, để lưu trữ byte đơn của năm 1901-2155
lớp sqlalchemy. thổ ngữ. mysql. LỚNLoại BIGINTEGER của MySQL
phương thứcengine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]81__init__[display_width=None, **kw]
Xây dựng một BIGINTEGER
Thông sốdisplay_width – Tùy chọn, chiều rộng hiển thị tối đa cho số này
không dấu – một boolean, tùy chọn
zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số
Kiểu BINARY của SQL
chữ ký lớp
lớp
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]82 [
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]83]lớp sqlalchemy. thổ ngữ. mysql. CHÚT
Loại BIT của MySQL
Loại này dành cho MySQL 5. 0. 3 hoặc cao hơn cho MyISAM, và 5. 0. 5 trở lên cho MyISAM, MEMORY, InnoDB và BDB. Đối với các phiên bản cũ hơn, hãy sử dụng loại MSTinyInteger[]
phương thứcengine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]84__init__[length=None]
Xây dựng một BIT
Thông sốchiều dài - Tùy chọn, số lượng bit
lớp sqlalchemy. thổ ngữ. mysql. BÃILoại SQL BLOB
phương thứcengine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]85__init__[độ dài. Tùy chọn[int] = Không có]
kế thừa từ phương pháp
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]86 của
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]17
Xây dựng một loại LargeBinary
Thông sốđộ dài – tùy chọn, độ dài cho cột để sử dụng trong các câu lệnh DDL, đối với những loại nhị phân chấp nhận độ dài, chẳng hạn như loại BLOB của MySQL
lớp sqlalchemy. thổ ngữ. mysql. BOOLESEKiểu SQL BOOLESE
phương thứcengine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]88__init__[create_constraint. bool = Sai, tên. Tùy chọn[str] = Không, _create_events. bool = Đúng, _adapted_from. Tùy chọn[SchemaType] = Không có]
kế thừa từ phương pháp
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]89 của
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]90
Xây dựng một Boolean
Thông sốcreate_constraint –
mặc định là Sai. Nếu boolean được tạo dưới dạng int/smallint, cũng tạo một ràng buộc KIỂM TRA trên bảng để đảm bảo giá trị là 1 hoặc 0
Ghi chú
chúng tôi đặc biệt khuyến nghị ràng buộc CHECK có tên rõ ràng để hỗ trợ các mối quan tâm về quản lý lược đồ. Điều này có thể được thiết lập bằng cách đặt tham số
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
91 hoặc bằng cách thiết lập quy ước đặt tên thích hợp;Thay đổi trong phiên bản 1. 4. - cờ này hiện được mặc định là Sai, có nghĩa là không có ràng buộc KIỂM TRA nào được tạo cho loại liệt kê không phải bản địa
tên - nếu ràng buộc KIỂM TRA được tạo, hãy chỉ định tên của ràng buộc
Loại CHAR của MySQL, dành cho dữ liệu ký tự có độ dài cố định
phương thứcengine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]92__init__[length=None, **kwargs]
Xây dựng CHAR
Thông sốđộ dài – Độ dài dữ liệu tối đa, tính bằng ký tự
binary – Optional, use the default binary collation for the national character set. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, hãy sử dụng loại BINARY cho dữ liệu nhị phân
collation – Optional, request a particular collation. Phải phù hợp với bộ chữ quốc gia
The SQL DATE type
Loại DATETIME của MySQL
Construct a MySQL DATETIME type
Thông sốfractional seconds precision value. MySQL 5. 6. 4 supports storage of fractional seconds; this parameter will be used when emitting DDL for the DATETIME type
Ghi chú
DBAPI driver support for fractional seconds may be limited; current support includes MySQL Connector/Python
Loại DECIMAL của MySQL
methodengine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]93__init__[precision=None, scale=None, asdecimal=True, **kw]
Construct a DECIMAL
Thông sốprecision – Total digits in this number. If scale and precision are both None, values are stored to limits allowed by the server
scale – The number of digits after the decimal point
không dấu – một boolean, tùy chọn
zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số
Loại NHÂN ĐÔI MySQL
chữ ký lớp
class
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]94 [
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]95,
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]96]method
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]97__init__[precision=None, scale=None, asdecimal=True, **kw]
Construct a DOUBLE
Ghi chú
The
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]98 type by default converts from float to Decimal, using a truncation that defaults to 10 digits. Specify either
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]99 or
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+100 in order to change this scale, or
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+101 to return values directly as Python floating pointsThông số
precision – Total digits in this number. If scale and precision are both None, values are stored to limits allowed by the server
scale – The number of digits after the decimal point
không dấu – một boolean, tùy chọn
zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số
Loại MySQL ENUM
methodSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+102__init__[*enums, **kw]
Construct an ENUM
E. g
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+19Thông số
enums –
The range of valid values for this ENUM. Values in enums are not quoted, they will be escaped and surrounded by single quotes when generating the schema. This object may also be a PEP-435-compliant enumerated type
strict –
This flag has no effect
Changed in version The. MySQL ENUM type as well as the base Enum type now validates all Python data values
charset – Optional, a column-level character set for this string value. Takes precedence to ‘ascii’ or ‘unicode’ short-hand
collation – Optional, a column-level collation for this string value. Takes precedence to ‘binary’ short-hand
ascii – Defaults to False. short-hand for the
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
07 character set, generates ASCII in schemaunicode – Mặc định là Sai. viết tắt của bộ ký tự
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
104, tạo UNICODE trong lược đồnhị phân – Mặc định là Sai. nói ngắn gọn, hãy chọn loại đối chiếu nhị phân phù hợp với bộ ký tự của cột. Tạo BINARY trong lược đồ. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, chỉ ảnh hưởng đến đối chiếu dữ liệu ký tự
Loại FLOAT của MySQL
phương thứcSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+105__init__[precision=None, scale=None, asdecimal=False, **kw]
Xây dựng một FLOAT
Thông sốprecision – Total digits in this number. If scale and precision are both None, values are stored to limits allowed by the server
scale – The number of digits after the decimal point
không dấu – một boolean, tùy chọn
zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số
Loại INTEGER của MySQL
phương thứcSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+106__init__[display_width=None, **kw]
Xây dựng một INTEGER
Thông sốdisplay_width – Tùy chọn, chiều rộng hiển thị tối đa cho số này
không dấu – một boolean, tùy chọn
zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số
Loại JSON của MySQL
MySQL hỗ trợ JSON kể từ phiên bản 5. 7. MariaDB hỗ trợ JSON [dưới dạng bí danh cho LONGTEXT] kể từ phiên bản 10. 2
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+107 được sử dụng tự động bất cứ khi nào kiểu dữ liệu cơ sở
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+107 được sử dụng đối với chương trình phụ trợ MySQL hoặc MariaDB
Xem thêm
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+107 - tài liệu chính cho kiểu dữ liệu JSON đa nền tảng chung
Loại
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+107 hỗ trợ tính bền vững của các giá trị JSON cũng như các thao tác chỉ mục cốt lõi được cung cấp bởi kiểu dữ liệu
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+107, bằng cách điều chỉnh các thao tác để hiển thị hàm
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+112 ở cấp cơ sở dữ liệulớp sqlalchemy. thổ ngữ. mysql. LONGBLOB
Loại LONGBLOB của MySQL, cho dữ liệu nhị phân lên tới 2^32 byte
lớp sqlalchemy. thổ ngữ. mysql. VĂN BẢN DÀILoại LONGTEXT của MySQL, cho văn bản tối đa 2^32 ký tự
methodSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+113__init__[**kwargs]
Tạo một LONGTEXT
Thông sốcharset – Optional, a column-level character set for this string value. Takes precedence to ‘ascii’ or ‘unicode’ short-hand
collation – Optional, a column-level collation for this string value. Takes precedence to ‘binary’ short-hand
ascii – Defaults to False. short-hand for the
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
07 character set, generates ASCII in schemaunicode – Mặc định là Sai. viết tắt của bộ ký tự
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
104, tạo UNICODE trong lược đồquốc gia – Tùy chọn. Nếu đúng, hãy sử dụng bộ ký tự quốc gia được định cấu hình của máy chủ
nhị phân – Mặc định là Sai. nói ngắn gọn, hãy chọn loại đối chiếu nhị phân phù hợp với bộ ký tự của cột. Tạo BINARY trong lược đồ. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, chỉ ảnh hưởng đến đối chiếu dữ liệu ký tự
Loại MEDIUMBLOB của MySQL, cho dữ liệu nhị phân lên tới 2^24 byte
lớp sqlalchemy. thổ ngữ. mysql. TRUNG BÌNHloại MySQL TRUNG BÌNH
phương phápSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+116__init__[display_width=None, **kw]
Xây dựng một MEDIUMINTEGER
Thông sốdisplay_width – Tùy chọn, chiều rộng hiển thị tối đa cho số này
không dấu – một boolean, tùy chọn
zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số
Loại MEDIUMTEXT của MySQL, cho văn bản tối đa 2^24 ký tự
methodSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+117__init__[**kwargs]
Xây dựng một MEDIUMTEXT
Thông sốcharset – Optional, a column-level character set for this string value. Takes precedence to ‘ascii’ or ‘unicode’ short-hand
collation – Optional, a column-level collation for this string value. Takes precedence to ‘binary’ short-hand
ascii – Defaults to False. short-hand for the
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
07 character set, generates ASCII in schemaunicode – Mặc định là Sai. viết tắt của bộ ký tự
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
104, tạo UNICODE trong lược đồquốc gia – Tùy chọn. Nếu đúng, hãy sử dụng bộ ký tự quốc gia được định cấu hình của máy chủ
nhị phân – Mặc định là Sai. nói ngắn gọn, hãy chọn loại đối chiếu nhị phân phù hợp với bộ ký tự của cột. Tạo BINARY trong lược đồ. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, chỉ ảnh hưởng đến đối chiếu dữ liệu ký tự
Loại NCHAR của MySQL
For fixed-length character data in the server’s configured national character set
methodSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+120__init__[length=None, **kwargs]
Construct an NCHAR
Thông sốđộ dài – Độ dài dữ liệu tối đa, tính bằng ký tự
binary – Optional, use the default binary collation for the national character set. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, hãy sử dụng loại BINARY cho dữ liệu nhị phân
collation – Optional, request a particular collation. Phải phù hợp với bộ chữ quốc gia
Loại SỐ MySQL
methodSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+121__init__[precision=None, scale=None, asdecimal=True, **kw]
Construct a NUMERIC
Thông sốprecision – Total digits in this number. If scale and precision are both None, values are stored to limits allowed by the server
scale – The number of digits after the decimal point
không dấu – một boolean, tùy chọn
zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số
Loại NVARCHAR của MySQL
For variable-length character data in the server’s configured national character set
methodSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+122__init__[length=None, **kwargs]
Construct an NVARCHAR
Thông sốđộ dài – Độ dài dữ liệu tối đa, tính bằng ký tự
binary – Optional, use the default binary collation for the national character set. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, hãy sử dụng loại BINARY cho dữ liệu nhị phân
collation – Optional, request a particular collation. Phải phù hợp với bộ chữ quốc gia
Loại MySQL THỰC SỰ
methodSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+123__init__[precision=None, scale=None, asdecimal=True, **kw]
Construct a REAL
Ghi chú
The
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+124 type by default converts from float to Decimal, using a truncation that defaults to 10 digits. Specify either
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]99 or
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+100 in order to change this scale, or
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+101 to return values directly as Python floating pointsThông số
precision – Total digits in this number. If scale and precision are both None, values are stored to limits allowed by the server
scale – The number of digits after the decimal point
không dấu – một boolean, tùy chọn
zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số
MySQL SET loại
methodSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+128__init__[*values, **kw]
Construct a SET
E. g
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+30
The list of potential values is required in the case that this set will be used to generate DDL for a table, or if the
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+129 flag is set to TrueThông số
values – The range of valid values for this SET. The values are not quoted, they will be escaped and surrounded by single quotes when generating the schema
convert_unicode – Same flag as that of
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
130collation – same as that of
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
131charset – same as that of
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
132ascii – same as that of
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
133unicode – same as that of
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
134binary – same as that of
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
135retrieve_as_bitwise –
if True, the data for the set type will be persisted and selected using an integer value, where a set is coerced into a bitwise mask for persistence. MySQL allows this mode which has the advantage of being able to store values unambiguously, such as the blank string
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
136. The datatype will appear as the expressionSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
137 in a SELECT statement, so that the value is coerced into an integer value in result sets. This flag is required if one wishes to persist a set that can store the blank stringSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
136 as a valueWarning
When using
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
129, it is essential that the list of set values is expressed in the exact same order as exists on the MySQL database
Loại SMALLINTEGER của MySQL
methodSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+140__init__[display_width=None, **kw]
Construct a SMALLINTEGER
Thông sốdisplay_width – Tùy chọn, chiều rộng hiển thị tối đa cho số này
không dấu – một boolean, tùy chọn
zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số
MySQL TEXT type, for text up to 2^16 characters
chữ ký lớp
class
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+141 [
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+142,
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+143]phương thức
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+144__init__[length=None, **kw]
Construct a TEXT
Thông sốlength – Optional, if provided the server may optimize storage by substituting the smallest TEXT type sufficient to store
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
145 characterscharset – Optional, a column-level character set for this string value. Takes precedence to ‘ascii’ or ‘unicode’ short-hand
collation – Optional, a column-level collation for this string value. Takes precedence to ‘binary’ short-hand
ascii – Defaults to False. short-hand for the
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
07 character set, generates ASCII in schemaunicode – Mặc định là Sai. viết tắt của bộ ký tự
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
104, tạo UNICODE trong lược đồquốc gia – Tùy chọn. Nếu đúng, hãy sử dụng bộ ký tự quốc gia được định cấu hình của máy chủ
nhị phân – Mặc định là Sai. nói ngắn gọn, hãy chọn loại đối chiếu nhị phân phù hợp với bộ ký tự của cột. Tạo BINARY trong lược đồ. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, chỉ ảnh hưởng đến đối chiếu dữ liệu ký tự
Loại THỜI GIAN của MySQL
Construct a MySQL TIME type
Thông sốfractional seconds precision value. MySQL 5. 6 supports storage of fractional seconds; this parameter will be used when emitting DDL for the TIME type
Ghi chú
DBAPI driver support for fractional seconds may be limited; current support includes MySQL Connector/Python
Loại DẤU THỜI GIAN của MySQL
Construct a MySQL TIMESTAMP type
Thông sốfractional seconds precision value. MySQL 5. 6. 4 supports storage of fractional seconds; this parameter will be used when emitting DDL for the TIMESTAMP type
Ghi chú
DBAPI driver support for fractional seconds may be limited; current support includes MySQL Connector/Python
Loại TINYBLOB của MySQL, cho dữ liệu nhị phân lên tới 2^8 byte
class sqlalchemy. dialects. mysql. TINYINTLoại TINYINT của MySQL
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+148__init__[display_width=None, **kw]
Construct a TINYINT
Thông sốdisplay_width – Tùy chọn, chiều rộng hiển thị tối đa cho số này
không dấu – một boolean, tùy chọn
zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số
Loại TINYTEXT của MySQL, cho văn bản tối đa 2^8 ký tự
phương thứcSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+149__init__[**kwargs]
Xây dựng một TINYTEXT
Thông sốcharset – Optional, a column-level character set for this string value. Takes precedence to ‘ascii’ or ‘unicode’ short-hand
collation – Optional, a column-level collation for this string value. Takes precedence to ‘binary’ short-hand
ascii – Defaults to False. short-hand for the
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
07 character set, generates ASCII in schemaunicode – Mặc định là Sai. viết tắt của bộ ký tự
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
104, tạo UNICODE trong lược đồquốc gia – Tùy chọn. Nếu đúng, hãy sử dụng bộ ký tự quốc gia được định cấu hình của máy chủ
nhị phân – Mặc định là Sai. nói ngắn gọn, hãy chọn loại đối chiếu nhị phân phù hợp với bộ ký tự của cột. Tạo BINARY trong lược đồ. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, chỉ ảnh hưởng đến đối chiếu dữ liệu ký tự
Kiểu VARBINARY của SQL
chữ ký lớp
lớp
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+152 [
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]83]lớp sqlalchemy. thổ ngữ. mysql. VARCHAR
Loại VARCHAR của MySQL, cho dữ liệu ký tự có độ dài thay đổi
phương thứcSELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+154__init__[length=None, **kwargs]
Xây dựng một VARCHAR
Thông sốcharset – Optional, a column-level character set for this string value. Takes precedence to ‘ascii’ or ‘unicode’ short-hand
collation – Optional, a column-level collation for this string value. Takes precedence to ‘binary’ short-hand
ascii – Defaults to False. short-hand for the
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
07 character set, generates ASCII in schemaunicode – Mặc định là Sai. viết tắt của bộ ký tự
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+
104, tạo UNICODE trong lược đồquốc gia – Tùy chọn. Nếu đúng, hãy sử dụng bộ ký tự quốc gia được định cấu hình của máy chủ
nhị phân – Mặc định là Sai. nói ngắn gọn, hãy chọn loại đối chiếu nhị phân phù hợp với bộ ký tự của cột. Tạo BINARY trong lược đồ. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, chỉ ảnh hưởng đến đối chiếu dữ liệu ký tự
Loại NĂM của MySQL, để lưu trữ byte đơn của năm 1901-2155
MySQL DML Constructs
Tên đối tượng Mô tảinsert[table]
Construct a MySQL/MariaDB-specific variant
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+157 construct
Insert
Việc triển khai INSERT dành riêng cho MySQL
function sqlalchemy. dialects. mysql. insert[table]Construct a MySQL/MariaDB-specific variant
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+157 construct
The
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+157 construct includes additional methods
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+160class sqlalchemy. dialects. mysql. Insert
Việc triển khai INSERT dành riêng cho MySQL
Adds methods for MySQL-specific syntaxes such as ON DUPLICATE KEY UPDATE
The
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+157 object is created using the
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+162 functionattribute
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+163inherit_cache. Optional[bool] = False
Cho biết liệu phiên bản
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]75 này có nên sử dụng sơ đồ tạo khóa bộ đệm được sử dụng bởi siêu lớp trực tiếp của nó hay không
Thuộc tính mặc định là
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]76, chỉ ra rằng một cấu trúc chưa tính đến việc cấu trúc đó có phù hợp để tham gia vào bộ nhớ đệm hay không;
Cờ này có thể được đặt thành
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]78 trên một lớp cụ thể, nếu SQL tương ứng với đối tượng không thay đổi dựa trên các thuộc tính cục bộ của lớp này chứ không phải lớp cha của nóattribute
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+163inserted
Provide the “inserted” namespace for an ON DUPLICATE KEY UPDATE statement
MySQL’s ON DUPLICATE KEY UPDATE clause allows reference to the row that would be inserted, via a special function called
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+169. This attribute provides all columns in this row to be referenceable such that they will render within a
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+169 function inside the ON DUPLICATE KEY UPDATE clause. The attribute is named
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+171 so as not to conflict with the existing
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+172 method
Tip
The
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+173 attribute is an instance of
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+174, which provides an interface the same as that of the
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+175 collection described at Accessing Tables and Columns. With this collection, ordinary names are accessible like attributes [e. g.
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+176], but special names and dictionary method names should be accessed using indexed access, such as
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+177 or
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+178. See the docstring for
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+174 for further examples
Specifies the ON DUPLICATE KEY UPDATE clause
Thông sốWarning
This dictionary does not take into account Python-specified default UPDATE values or generation functions, e. g. those specified using
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+180. These values will not be exercised for an ON DUPLICATE KEY UPDATE style of UPDATE, unless values are manually specified hereThông số
As an alternative to passing key/value parameters, a dictionary or list of 2-tuples can be passed as a single positional argument
Passing a single dictionary is equivalent to the keyword argument form
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+31
Passing a list of 2-tuples indicates that the parameter assignments in the UPDATE clause should be ordered as sent, in a manner similar to that described for the
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+181 construct overall in Parameter Ordered Updates
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+32
Changed in version 1. 3. parameters can be specified as a dictionary or list of 2-tuples; the latter form provides for parameter ordering
mysqlclient [fork of MySQL-Python]
Support for the MySQL / MariaDB database via the mysqlclient [maintained fork of MySQL-Python] driver
DBAPI
Documentation and download information [if applicable] for mysqlclient [maintained fork of MySQL-Python] is available at. https. //pypi. org/project/mysqlclient/
Connecting
Connect String
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+33
Driver Status
The mysqlclient DBAPI is a maintained fork of the MySQL-Python DBAPI that is no longer maintained. mysqlclient supports Python 2 and Python 3 and is very stable
bảng chữ cái
Please see Unicode for current recommendations on unicode handling
SSL Connections
The mysqlclient and PyMySQL DBAPIs accept an additional dictionary under the key “ssl”, which may be specified using the
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+182 dictionary
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+34
For convenience, the following keys may also be specified inline within the URL where they will be interpreted into the “ssl” dictionary automatically. “ssl_ca”, “ssl_cert”, “ssl_key”, “ssl_capath”, “ssl_cipher”, “ssl_check_hostname”. An example is as follows
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+35
If the server uses an automatically-generated certificate that is self-signed or does not match the host name [as seen from the client], it may also be necessary to indicate
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+183
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+36
Using MySQLdb with Google Cloud SQL
Google Cloud SQL now recommends use of the MySQLdb dialect. Connect using a URL like the following
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+37
Con trỏ phía máy chủ
The mysqldb dialect supports server-side cursors. See Server Side Cursors
PyMySQL
Support for the MySQL / MariaDB database via the PyMySQL driver
DBAPI
Documentation and download information [if applicable] for PyMySQL is available at. https. //pymysql. readthedocs. io/
Connecting
Connect String
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+38
bảng chữ cái
Please see Unicode for current recommendations on unicode handling
SSL Connections
The PyMySQL DBAPI accepts the same SSL arguments as that of MySQLdb, described at SSL Connections. See that section for examples
MySQL-Python Compatibility
The pymysql DBAPI is a pure Python port of the MySQL-python [MySQLdb] driver, and targets 100% compatibility. Hầu hết các ghi chú hành vi cho MySQL-python cũng áp dụng cho trình điều khiển pymysql
MariaDB-Connector
Support for the MySQL / MariaDB database via the MariaDB Connector/Python driver
DBAPI
Tài liệu và thông tin tải xuống [nếu có] cho MariaDB Connector/Python có sẵn tại. https. //pypi. tổ chức/dự án/mariadb/
Connecting
Connect String
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+39
Driver Status
Trình kết nối MariaDB/Python cho phép các chương trình Python truy cập cơ sở dữ liệu MariaDB và MySQL bằng API tuân thủ API Python DB 2. 0 [PEP-249]. Nó được viết bằng C và sử dụng thư viện máy khách MariaDB Connector/C để liên lạc với máy chủ máy khách
Lưu ý rằng trình điều khiển mặc định cho URI kết nối
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+184 tiếp tục là
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+185. Cần có
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+186 để sử dụng trình điều khiển này
Trình kết nối MySQL
Hỗ trợ cơ sở dữ liệu MySQL / MariaDB thông qua trình điều khiển MySQL Connector/Python
DBAPI
Tài liệu và thông tin tải xuống [nếu có] cho MySQL Connector/Python có sẵn tại. https. //pypi. org/dự án/mysql-connector-python/
Connecting
Connect String
Table['mytable', metadata, Column['data', String[32]], mysql_engine='InnoDB', mysql_charset='utf8mb4', mysql_key_block_size="1024" ]0
Ghi chú
Trình kết nối MySQL/Python DBAPI đã gặp nhiều vấn đề kể từ khi phát hành, một số vấn đề có thể vẫn chưa được giải quyết và phương ngữ mysqlconnector không được kiểm tra như một phần của quá trình tích hợp liên tục của SQLAlchemy. Các phương ngữ MySQL được đề xuất là mysqlclient và PyMySQL
không đồng bộ
Hỗ trợ cơ sở dữ liệu MySQL / MariaDB thông qua trình điều khiển không đồng bộ
DBAPI
Tài liệu và thông tin tải xuống [nếu có] cho asyncmy có sẵn tại. https. //github. com/long2ice/không đồng bộ
Connecting
Connect String
Table['mytable', metadata, Column['data', String[32]], mysql_engine='InnoDB', mysql_charset='utf8mb4', mysql_key_block_size="1024" ]1
Ghi chú
Phương ngữ không đồng bộ kể từ tháng 9 năm 2021 đã được thêm vào để cung cấp khả năng tương thích không đồng bộ của MySQL/MariaDB do trình điều khiển cơ sở dữ liệu aiomysql đã trở nên không rõ ràng, tuy nhiên, bản thân phương ngữ không đồng bộ là rất mới
Sử dụng lớp hòa giải asyncio đặc biệt, phương ngữ không đồng bộ có thể được sử dụng làm phần phụ trợ cho gói tiện ích mở rộng asyncio SQLAlchemy
Phương ngữ này thường chỉ được sử dụng với chức năng tạo động cơ
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+187
Table['mytable', metadata, Column['data', String[32]], mysql_engine='InnoDB', mysql_charset='utf8mb4', mysql_key_block_size="1024" ]2
aiomysql
Hỗ trợ cơ sở dữ liệu MySQL / MariaDB thông qua trình điều khiển aiomysql
DBAPI
Tài liệu và thông tin tải xuống [nếu có] cho aiomysql có sẵn tại. https. //github. com/aio-libs/aiomysql
Connecting
Connect String
Table['mytable', metadata, Column['data', String[32]], mysql_engine='InnoDB', mysql_charset='utf8mb4', mysql_key_block_size="1024" ]3
Warning
Phương ngữ aiomysql hiện không được thử nghiệm như một phần tích hợp liên tục của SQLAlchemy. Kể từ tháng 9 năm 2021, trình điều khiển dường như không được bảo trì và không còn hoạt động cho Python phiên bản 3. 10 và cũng phụ thuộc vào phiên bản PyMySQL đã lỗi thời đáng kể. Vui lòng tham khảo phương ngữ asyncmy để biết chức năng asyncio hiện tại của MySQL/MariaDB
Phương ngữ aiomysql là phương ngữ asyncio Python thứ hai của SQLAlchemy
Sử dụng lớp hòa giải asyncio đặc biệt, phương ngữ aiomysql có thể được sử dụng làm phụ trợ cho gói tiện ích mở rộng asyncio SQLAlchemy
Phương ngữ này thường chỉ được sử dụng với chức năng tạo động cơ
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+187
Table['mytable', metadata, Column['data', String[32]], mysql_engine='InnoDB', mysql_charset='utf8mb4', mysql_key_block_size="1024" ]4
cymysql
Hỗ trợ cơ sở dữ liệu MySQL / MariaDB thông qua trình điều khiển CyMySQL
DBAPI
Tài liệu và thông tin tải xuống [nếu có] cho CyMySQL có sẵn tại. https. //github. com/nakagami/CyMySQL
Connecting
Connect String
Table['mytable', metadata, Column['data', String[32]], mysql_engine='InnoDB', mysql_charset='utf8mb4', mysql_key_block_size="1024" ]5
Ghi chú
Phương ngữ CyMySQL không được kiểm tra như một phần tích hợp liên tục của SQLAlchemy và có thể có các sự cố chưa được giải quyết. Các phương ngữ MySQL được đề xuất là mysqlclient và PyMySQL
pyodbc
Hỗ trợ cơ sở dữ liệu MySQL / MariaDB thông qua trình điều khiển PyODBC
DBAPI
Tài liệu và thông tin tải xuống [nếu có] cho PyODBC có sẵn tại. https. //pypi. tổ chức/dự án/pyodbc/
Connecting
Connect String
Table['mytable', metadata, Column['data', String[32]], mysql_engine='InnoDB', mysql_charset='utf8mb4', mysql_key_block_size="1024" ]6
Ghi chú
Phương ngữ PyODBC cho MySQL không được kiểm tra như một phần tích hợp liên tục của SQLAlchemy. Các phương ngữ MySQL được đề xuất là mysqlclient và PyMySQL. Tuy nhiên, nếu bạn muốn sử dụng phương ngữ mysql+pyodbc và yêu cầu hỗ trợ đầy đủ cho
SELECT test . t1 . i FROM t1; +------+ | i | +------+ | 10 | +------+31 ký tự [bao gồm các ký tự bổ sung như biểu tượng cảm xúc], hãy đảm bảo sử dụng bản phát hành hiện tại của Trình kết nối MySQL/ODBC và chỉ định “ANSI” [không phải “Unicode”]