0
pyodbcを使用してSQLデータベースからデータを取得しようとしていて、numpy.arrayに配置したい。しかし、np.fromiter()の引数に複数のデータ型を入力するのが難しいと感じました。pyodbc Numpy配列へのSQL照会typeerror:バイトのようなオブジェクトが必要
import pyodbc as od
import numpy as np
con = od.connect('DSN=dBASE; UID=user; PWD=pass')
cursor = con.cursor()
SQLCommand = (
"""
SELECT
[Item No_]
,sum ([Quantity]) as TotQty
,sum ([Discount Amount]) as DiscAmount
,sum ([Cost Amount]) as CostAmount
,[Date]
,sum ([Net Amount]) as NetAmount
,sum ([VAT Amount]) as VATAmount
,sum ([Refund Qty_]) as RefundQty
FROM database
where [DATE] between ('2015-12-01 00:00:00.000') and ('2015-12-31 00:00:00.000') and [area No_] = '123'
group by ROLLUP([DATE],[Item No_]);
""")
cursor.execute(SQLCommand)
results = cursor.fetchall()
results_as_list = [i[0] for i in results]
array = np.fromiter(results_as_list, dtype="str, float, float, datetime64,float,float,float")
print(array[:5,:])
そして、私はあなたが複数のdtypesで、1回の反復可能な、クエリの特に最初の列を渡すためにしようとしている
TypeError: a bytes-like object is required, not 'str'
おかげで、それが動作します!私はまた、 "| S50"の意味を知ってもいいですか、私はそれをgoogleにしようとしましたが、それに関する参考文献は見つかりませんでした。 – Windalfin
素晴らしい!これは、デフォルトでは可変長のdtypeであるため、[文字列の制限](http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html)を設定しています。ここでは、50文字が使用されています。必要に応じて調整します。 – Parfait