私のスクリプトで最も奇妙な動作が見られます。datetime.datetime オブジェクトであるかのように、datetime.date オブジェクトを変換しようとしているように見える dbapi2.py から ValueError を取得しています。
File "C:\Python27\Lib\sqlite3\dbapi2.py", line 66, in convert_timestamp
datepart, timepart = val.split(" ")
ValueError: need more than 1 value to unpack
私は特別なことは何もしていません。実際、わずかに異なる tSql を使用してまったく同じことを行う他のスクリプトがいくつかあり、まったく問題はありません。Sqlを構築するクラスは次のとおりです。
class TransactionQuery:
def __init__(self, account_iter, date):
self.account_iter = tuple(account_list)
self.date = date
placeholder = ("?" for item in self.account_list)
placeholders = ', '.join(item for item in placeholder)
self.query = """select * from transactions where account_cd in (%s) and
effected_dt = ?""" % placeholders
@property
def params(self):
return (self.account_list) + (self.date,)
それを呼び出すコード:
with Sqlite() as curs:
print mquery.query
print mquery.params
curs.execute(mquery.query, mquery.params)
return curs.fetchall()
そして、印刷ステートメントからの出力:
select * from transactions where account_cd in (?, ?, ?, ?) and effected_dt = ?
('713271', '71204', '713311', '713471', datetime.date(2012, 12, 17))
この場合、Sqlite が datetime.date オブジェクトで問題を起こす理由はありますか?