データベースから任意の数の行を取得するクエリがありますが、通常は2つを超えません。変数を関数に渡すときのPythonのオーバーフローエラー
私は、GUI経由でデータiの値をハードコーディングし、クエリにそれらを養う場合、それは正常に動作しますが、私は通常、全体のプログラムを実行すると
ret = self.workaround.delete_last_version(pdf_file, self.cust_id, self.part_id)
でクエリを呼び出し、入力、クエリ関数は呼び出しが行われる前に、私は(文字列と文字列にpart_idとCUST_IDを変換し、しかし
OverflowError: long too big to convert
呼び出されたときに、私はここで
はI値)を取得しますと一緒にテストしています。
part_id = "168440901713431956015724879141"
cust_id = "15424322074155018763160235136213"
pdf_file = "1971-48.pdf"
CUST_IDは、32文字の長さで、かつpart_idは30
であり、ここでクエリです。
query = """
SELECT Id, Name, DocDateStamp, Dir_Id
FROM SdmDocumentList
WHERE Owner_Id = ? AND Name = ?
ORDER BY DocDateStamp desc
"""
self.cursor.execute(query, (part_id, pdf_file))
result = self.cursor.fetchall()
、カーソルが__init__
def __init__(self):
self.conn =pyodbc.connect('DRIVER=SQL Server;SERVER=mssql;PORT=CORRECTPORT;DATABASE=DATABASENAME;UID=USER;PWD=SUPERSECRETPASSWORD;TDS_Version=8.0;Trusted_Connection=no') #windows
self.cursor = self.conn.cursor()
私は
[('70D8B606A5BD421F97467F2C8D1D8F04', '1971-48.pdf', datetime.datetime(2017, 5, 12, 9, 28, 58, 743333), 9),
('F049665629814B83B63B0536F985090B', '1971-48.pdf', datetime.datetime(2017, 5, 12, 9, 28, 22, 86666), 9),
('39EAB6B173B745E19BA8A0598AD8F015', '1971-48.pdf', datetime.datetime(2017, 5, 12, 9, 27, 58, 933333), 9),
('6309915CEA504839A8D7340F9A4FD601', '1971-48.pdf', datetime.datetime(2017, 5, 12, 9, 12, 26, 36666), 9),
('5D3E3AA218CA4FF59E8EC2DE2A6AB217', '1971-48.pdf', datetime.datetime(2017, 5, 12, 9, 11, 37, 760000), 9),
('1C2AC1073E754A41A998DF99BD0F4F48', '1971-48.pdf', datetime.datetime(2017, 5, 12, 9, 10, 49, 986666), 9),
('05EF8020EA354E669D1D930650FBCB02', '1971-48.pdf', datetime.datetime(2017, 5, 12, 8, 54, 59, 80000), 9),
('834979EFB639466ABC73E76F88DF6750', '1971-48.pdf', datetime.datetime(2017, 5, 12, 8, 54, 5, 46666), 9),
('F3EF2C75856E4926A52204EBA59072CB', '1971-48.pdf', datetime.datetime(2017, 5, 12, 8, 50, 38, 406666), 9),
('6F7FC2652E114162AF6B3C4C30818582', '1971-48.pdf', datetime.datetime(2017, 5, 12, 8, 37, 59, 610000), 9)]
私はPython2.7を実行しているコマンドラインから関数を呼び出すときに私が取得し、予想される出力、で定義されていますWindows7で64ビットと6GBのRAM、mssqlで
私はグーグルで、私がインターネット上で見つけたすべての問題は、長い間別の数値型に変換されていましたが、問題は解決されていませんでした。私はエラーを取得する行で、私は何かを変換しようとしていないだけで、関数に変数を渡す。
Pythonで関数に送信できるデータの量にはいくらかのメモリ制限がありますか、それとも完全に何か不足していますか?
必要に応じて詳細情報を提供していただければ幸いですが、私はこれに必要なすべてを書き留めたと思います。
cuplrit pyodbc
Dir_Id = 9 # Manufactering Data folder (from SdmDirSructure)
DocumentType_RecNo = 3 # PDF
OwnerType_RecNo = 2 # parent_id for Product (from SdmDirSructure)
FromTo = 14872094126171117726173141183125 # CNCDrill user ID
DocumentSubject_RecNo = 109 # Xcheck data (from SdmDocumentSubjects)
Owner_Id = self.part_id # It is the part id
DocDateStamp = file_datetime # datetime of the document
RegisteredDate = file_datetime # when the document was added to the doc manager
LastReadDate = file_datetime # date that the document last readed (set as the RegisteredDate)
ArchiveLocation_RecNo = 0 # Not in use
IsReceived = True # Not in use
IsArchived = False # Not in use
IsOwnedByUser = 0 # No-one ownes the file
query = """
INSERT INTO SdmDocumentList (Id, Name, Dir_Id, DocumentType_RecNo, OwnerType_RecNo, FromTo, DocumentSubject_RecNo, Owner_Id, DocDateStamp, RegisteredDate, LastReadDate, ArchiveLocation_RecNo, IsReceived, IsArchived, IsOwnedByUser, IsClassified)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
"""
self.cursor.execute(query, (uid,pdf_file, Dir_Id, DocumentType_RecNo, OwnerType_RecNo, FromTo, DocumentSubject_RecNo,Owner_Id, DocDateStamp, RegisteredDate, LastReadDate, ArchiveLocation_RecNo, IsReceived, IsArchived, IsOwnedByUser, IsClassified))
self.cursor.commit()
。(fetchAllの)場合のx [3] ==」 Owner_Id '] 'ショー?また、あなたは 'pyodbc.version'とは何ですか? –
同じエラー...私は、クエリが実際には、クエリの前にクラッシュが起きていると思います。同じエラーが別のクエリから出てきた開発の初期の問題がありました。ここで仮定した。 そしてその3.0.0サポートされていない – joedamarsio
スクリプトの他の場所にある変数(pdf_file、cust_id、part_id)の3つを問題なく渡しました。 – joedamarsio