Tôi đang sử dụng một truy vấn SQL lớn trong Python và cần chạy truy vấn đó bằng các ngày khác nhau [ngày là tên trường được sử dụng trong truy vấn]. Tôi cũng cần thay đổi tên bảng [giả sử rằng có nhiều bảng khác nhau mà tôi cần cập nhật ngày hoặc chèn các bản ghi mới].
I also need to change the table name [assume that there are various tables where I need to update the date or insert new records].
Bây giờ tôi đang tìm thấy nó một chút cồng kềnh và muốn chuyển tệp truy vấn sang cấu hình [hoặc .ini]. Tôi cũng muốn làm điều này để người dùng có thể dễ dàng thay đổi truy vấn mà không cần mở mã.
Tôi có thể đọc SQL nhưng Python không thể thay đổi các biến bên trong mã.
Ví dụ: trong tệp .ini SQL được lưu trữ dưới dạng [SQL]:
p_insert_query = insert into + tbl_p +
Tôi đã đọc cái này bên trong Python và có TBL_P đã được xác định là 'my_tbl' trong Python nhưng chuỗi truy vấn không cập nhật tên bảng.
Có cách nào khác để này không?
סטנל גר TOUR
2.87923 Huy hiệu vàng46 Huy hiệu bạc65 Huy hiệu Đồng23 gold badges46 silver badges65 bronze badges
Đã hỏi ngày 25 tháng 11 năm 2019 lúc 15:24Nov 25, 2019 at 15:24
1
Bạn có thể lưu trữ tệp .sql hoặc .txt chứa "truy vấn được tham số hóa".
Nếu bạn sử dụng thư viện PsyCopg, bạn có thể làm theo cách đó [như đã nêu trong tài liệu: //initd.org/psycopg/docs/sql.html]:
from psycopg2 import sql
my_query_text = "insert into {} values [%s, %s]" # just load that str from .sql or .txt file instead
tbl_p = "my_table_name"
cur.execute[sql.SQL[my_query_text].format[sql.Identifier[tbl_p]], [10, 20]] # [10,20] are sample values
Đã trả lời ngày 25 tháng 11 năm 2019 lúc 15:34Nov 25, 2019 at 15:34
FlofloFlo
9261 Huy hiệu vàng8 Huy hiệu bạc19 Huy hiệu đồng1 gold badge8 silver badges19 bronze badges
Cập nhật cuối cùng: 2018-01-13 Nguồn: InternetSource: Internet
Tác giả: Người dùngSử dụng tệp cấu hình để lưu dữ liệu kết nối cố định, thuận tiện hơn để thay đổi.
1. Tạo một tệp cấu hình mới: SQLConfig.config, lấy cơ sở dữ liệu làm ví dụ.
Nội dung như sau, và tất nhiên bạn có thể thêm nhiều
[Database1] database=db_test host=test.sqlserver.rds.alincs.com,3433 user=qhlt_just pwd=zHi4M63wIddlSDK2nY[Database2] database=db_test host=test.sqlserver.rds.alincs.com,3433 user=qhlt_just pwd=zHi4M63wIddlSDK2nY 。。。。。2. Đọc tệp cấu hình. Lớp mà người dùng Cấu hình để đọc tệp.
Mã như sau
# coding = utf-8 import ConfigParser def getSQLCONFIG [filename]: cf = ConfigParser.ConfigParser [] cf.read [filename] #Read configuration file # Read corresponding file parameters _database = cf.get ["Database1", "database"] _host = cf.get ["Database1", "host"] _user = cf.get ["Database1", "user"] _pwd = cf.get ["Database1", "pwd"] print "% s,% s,% s,% s"% [_database, _host, _user, _pwd] return _database, _host, _user, _pwd #return required parameters3. Kết nối với cơ sở dữ liệu và cài đặt thư viện PYODBC. Kết nối với cơ sở dữ liệu SQL Server
# coding = utf-8 import pyodbc import ReadConfig #Call to read the configuration file c = ReadConfig.getSQLCONFIG [r‘C: \ Users \ Administrator \ PycharmProjects \ untitled1 \ com \ SQLqueray \ SQlconfig.config ‘] conn_info = 'DRIVER = {SQL Server}; DATABASE =% s; SERVER =% s; UID =% s; PWD =% s'% [c [0], c [1], c [2], c [3 ]] mssql_conn = pyodbc.connect [conn_info] mssql_cur = mssql_conn.cursor [] #Query Name and User ID result = mssql_cur.execute ["select Fullname, id from god where id = 19688"] #Circular print query results for row in result: print row [0], row [1]Python đọc tệp cấu hình và kết nối với cơ sở dữ liệu SQL Serveriguration file and connects to the database SQL Server
Alibaba Cloud Sản phẩm nóng | ||||
Dịch vụ tính toán đàn hồi [ECS] | Máy chủ chuyên dụng [DDH] | APSARADB RDS cho MySQL [RDS] | Apsaradb cho Polardb [Polardb] | AnalyticDB cho PostgreSQL [ADB cho PG] |
AnalyTicDB cho MySQL [ADB cho MySQL] | Dịch vụ truyền dữ liệu [DTS] | Bộ cân bằng tải máy chủ [SLB] | Máy gia tốc toàn cầu [GA] | Mạng doanh nghiệp đám mây [CEN] |
Dịch vụ lưu trữ đối tượng [OSS] | Mạng phân phối nội dung [CDN] | Dịch vụ tin nhắn ngắn [SMS] | Dịch vụ container cho Kubernetes [ACK] | Data Lake Analytics [DLA] |
Apsaradb cho Redis [Redis] | Apsaradb cho MongoDB [MongoDB] | Cổng Nat | Cổng VPN | Tường lửa đám mây |
Chống ddos | Tường lửa ứng dụng web [WAF] | Dịch vụ đăng nhập | DataWorks | MaxCompute |
MapReduce đàn hồi [EMR] | Elaticsearch |