Tôi là người dùng AMPL cố gắng viết mô hình tối ưu hóa lập trình tuyến tính bằng Python (Mã Python đầu tiên của tôi). Tôi đang cố gắng tìm cách khai báo các tham số được lập chỉ mục trên các bộ hợp chất. Ví dụ, trong ampl, tôi sẽ nói: Đặt Một Set B Set C param x {A, B, C} param y {A, B, C} param z {A, B, C} Các bộ và thông số trên có thể dễ dàng đọc từ cơ sở dữ liệu thông qua AMPL.AMPL so với Python - Nhập bảng (từ điển đa chiều?)
Bảng mà tôi đọc từ cơ sở dữ liệu có sáu trường tức là A, B, C, x, y, z. Ba trong số đó là các khóa chính (A, B, C) và phần còn lại (x, y, z) là các giá trị được lập chỉ mục trên các khóa chính.
PYTHON PART: Tôi đang sử dụng mô-đun PYODBC để kết nối với SQL Server. Tôi đã thử "dict" nhưng nó có thể lập chỉ mục trên chỉ một khóa. Tôi không chắc chắn nên sử dụng tính năng python nào để khai báo ba trường đầu tiên dưới dạng một bộ hợp chất và x, y và z làm các giá trị được lập chỉ mục trên bộ hợp chất.
import pyodbc
con = pyodbc.connect('Trusted_Connection=yes', driver = '{SQL Server Native Client 10.0}', server = 'Server', database='db')
cur = con.cursor()
cur.execute("execute dbo.SP @Param =%d" %Param)
result = cur.fetchall()
Comp_Key, x, y, z= dict((A, B, C, [x,y,z]) for A, B, C, x, y, z in result)
Nguồn gốc không chính xác. Tôi không thể nghĩ về một cách để làm điều này.
Xin hãy giúp tôi :) Cảm ơn trước!
Cảm ơn Deb !! Nhiều đánh giá cao!! Những gì tôi đang tự hỏi về là tôi nên khai báo các bộ và các thông số trước khi tôi đọc bảng? Nếu có, làm thế nào? Hoặc tôi nên làm điều này: 'A, B, C, x, y, z = final_result'? Những gì tôi nhận được ở đây là tại Làm thế nào tôi có thể tách ra các bộ và các thông số sau khi tôi đọc chúng trong? –
Bạn không thể khai báo bất cứ điều gì trong python (nó được gõ động). Và nếu bảng của bạn có hàng như '[(A, B, C, x, y, z), (D, E, F, u, v, w) ...]' thì final_result sẽ có giá trị '{(A, B, C): [x, y, z], (D, E, F): [u, v, w] ...} ', vậy chính xác thì bạn muốn hỏi điều gì? –
Hãy để tôi bắt đầu với một ví dụ. Trong bảng mà tôi đọc dữ liệu từ, A = Nguồn, B = Dest, C = Sản phẩm, d = chi phí, e = khối lượng, f = số lượng. Tôi muốn có thể có tên trường sau khi đọc dữ liệu làm từ điển để tôi có thể lập chỉ mục trên các bộ (A, B, C) và lấy các giá trị tham số (x, y, z) để thực hiện các phép tính. –