tôi đang cố gắng thu thập thông tin từ một cơ sở dữ liệu SQL sử dụng pythonLàm thế nào để xử lý một tuyên bố chuỗi SQL dài bằng Python
tôi đã có thể kết nối và lấy dữ liệu khi câu lệnh SQL là đơn giản như
#cursor.execute("SELECT * FROM Client WHERE UsesTimesheet = 1 ORDER BY ClientName")
Tuy nhiên khi tôi chuyển sang một tuyên bố phức tạp hơn tôi nhận được lỗi hiển thị dưới đây
Traceback (most recent call last):
File "F:\Python\Test - AutoCad.py", line 30, in <module>
where jobnum = 1205992")
File "C:\Python26\ArcGIS10.0\lib\site-packages\pymssql.py", line 196, in execute
raise OperationalError, e[0]
OperationalError: SQL Server message 102, severity 15, state 1, line 1:
Incorrect syntax near 'jobnum'.
tuyên bố này hoạt động khi tôi sử dụng Microsoft SQL 2008 khách hàng nhưng không phải trong python.
Tôi đang làm gì không chính xác? Đối với các câu lệnh phức tạp, tôi có nên sử dụng SQLAlchemy không?
Mã hiện tại Dưới đây
import pymssql
import _mssql
import sys
# Connect to db using Windows Integrated Authentication.
conn = _mssql.connect(server='000.000.0.0', database='Mydb', trusted=True)
conn = pymssql.connect(host='000.000.0.0', database='Mydb', trusted=True)
# prepare a cursor object using cursor() method
cursor = conn.cursor()
cursor.execute("""SELECT PJI.*, PJO.*,
CST.ABCGS
FROM dbo.Traverse AS TRE
LEFT OUTER JOIN dbo.TraversePreEntry AS TPE
ON TRE.JobNum = dbo.GetJobNumberFromGroupId(TPE.GroupId)
LEFT OUTER JOIN AutoCADProjectInformation AS PJI
ON TRE.JobNum = PJI.JobNumber
LEFT OUTER JOIN CalculationStorageReplacement AS CST
ON CST.ProjectNumber = dbo.GetJobNumberFromGroupId(TPE.GroupId
LEFT OUTER JOIN dbo.TraverseElevations AS TEV
ON TRE.TraverseId = TEV.TraverseId
LEFT OUTER JOIN VGSDB.dbo.ProjectOffice AS PJO
ON PJI.PjbId = PJO.PjbId
where jobnum = 1205992""")
# Fetch rows
data = cursor.fetchall()
print "Info : %s " % str(data)
Xem ở trên ..... –