2017-08-23 25 views
0

由於我是編程新手,我有點掙扎。我目前正在寫一個Python腳本,我有點卡住了。我們的目標是解析從SQL獲取的一些空間信息到可用於我的py腳本的格式。解析Python中的SQL空間列

我能夠通過使用obdc模塊的SQL查詢和fetchall CAST。但是,一旦我獲取的數據是我得到的技巧。這裏是一個從fetchall打印的例子:

[(u'POLYGON ((7014.186279296875 6602.99658203125 1612.5, 7015.984375 6600.416015625 1612.5))',), (u'POLYGON ((6730.962646484375 6715.2490234375 1522.5, 6730.0869140625 6714.13916015625 1522.5))',)] 

我不完全確定我在這裏得到它就像一個元組列表。我試圖轉換爲列表的列表,但一定有我失蹤的東西。

這裏是可用的格式我要找:

[[7014.186279296875, 6602.99658203125, 1612.5], [7015.984375, 6600.416015625, 1612.5]] 

[[6730.962646484375, 6715.2490234375, 1522.5], [6730.0869140625, 6714.13916015625, 1522.5]] 

的我怎麼能做到這一點任何想法?也許有一種更好的方式來CAST在SQL或Python中的模塊,這將更容易使用,而不是隻是做一個cursor.fetchall()和解析?或者任何解析幫助將是有用的。謝謝。

回答

0

如果你想解析,那應該是直截了當的。例如,您提供的下一個代碼將執行此操作:

result = [] 
for element in data: 
    single_elements = element[0][10:-2].split(', ') 
    for se in single_elements: 
     row = str(se).split(' ') 
     result.append([float(a) for a in row]) 

結果將包含您所需的內容。如果解析不是一個選項,那麼粘貼一些你的代碼,這樣我就可以看到你是如何獲取數據的。

+0

謝謝@PerunSS。你的代碼運行良好,除了列表中的字符串需要被浮動並且unicode被刪除。到目前爲止的代碼並不複雜。我使用導入odbc,並且查詢=「SELECT TOP 2 CAST([ggem_value] AS varchar(max))FROM [Atlas_STP]。[dbo]。[geom_geometry_sqlgeometry]」,然後執行fetch all。 – erok54

+0

@ erok54將轉換添加到字符串並稍後浮動。至於提取數據時的改進,我假設你正在使用T-SQL,而我對T-SQL並不擅長,但如果你可以從數據庫中過去數據樣本,也許我可以找出一些東西。 – PerunSS