Python thay thế dấu phần trăm
Ngày đăng:
17/12/2022
Trả lời:
0
Lượt xem:
79
>>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)6 >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)7 >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)8 >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)9 >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)0 >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)1 >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)9 >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)3 Việc "xâu chuỗi hóa" đối tượng câu lệnh SQLAlchemy Core hoặc đoạn biểu thức, cũng như đối tượng ORM >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)4, trong phần lớn các trường hợp đơn giản cũng đơn giản như sử dụng hàm dựng sẵn >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)5, như bên dưới khi sử dụng nó với hàm >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)6 ( Nội dung dựng sẵn >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)5, hoặc tương đương, có thể được gọi trên đối tượng ORM >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)4 cũng như bất kỳ câu lệnh nào, chẳng hạn như câu lệnh của >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)1, >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)2, v.v. và bất kỳ đoạn biểu thức nào, chẳng hạn như Hiển thị các tham số “POSTCOMPILE” dưới dạng các tham số ràng buộcSQLAlchemy bao gồm một biến thể trên tham số ràng buộc được gọi là >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)3, là tham số "được đánh giá muộn" được hiển thị ở trạng thái trung gian khi cấu trúc SQL được biên dịch, sau đó được xử lý thêm tại thời điểm thực thi câu lệnh khi các giá trị đã biết thực tế được chuyển. Theo mặc định, các tham số "Mở rộng" được sử dụng cho các biểu thức >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)4 để chuỗi SQL có thể được lưu vào bộ nhớ cache một cách an toàn độc lập với danh sách giá trị thực tế được chuyển đến một lệnh gọi cụ thể của >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)4 >>> stmt = select(A).where(A.id.in_[1, 2, 3]) Để hiển thị mệnh đề IN với các ký hiệu tham số ràng buộc thực, hãy sử dụng cờ >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)6 với >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)7 >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s) Cờ >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)8, được mô tả trong phần trước liên quan đến hiển thị các tham số ràng buộc, tự động đặt >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)9 thành True, vì vậy, đối với một câu lệnh có chuỗi int/chuỗi đơn giản, chúng có thể được xâu chuỗi trực tiếp >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)1 >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)10 và >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)11 cũng tương thích với >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)9, do đó, các công thức trước đó để hiển thị các tham số ràng buộc nội tuyến sẽ hoạt động ở đây theo cách tương tự, chẳng hạn như biểu mẫu vị trí của SQLite >>> e = create_engine("postgresql+psycopg2://") >>> print(stmt.compile(e, compile_kwargs={"render_postcompile": True})) SELECT a.id, a.data FROM a WHERE a.id IN (%(id_1_1)s, %(id_1_2)s, %(id_1_3)s)5 Cảnh báo Hãy nhớ rằng, tất cả các công thức mã ở trên xâu chuỗi các giá trị bằng chữ, bỏ qua việc sử dụng các tham số ràng buộc khi gửi câu lệnh tới cơ sở dữ liệu, chỉ được sử dụng khi
Các công thức trên để xâu chuỗi các giá trị theo nghĩa đen không an toàn theo bất kỳ cách nào và không bao giờ được sử dụng đối với cơ sở dữ liệu sản xuất |