dictオブジェクトを使用して多くを挿入しようとしているテーブルがあります。
engine = create_engine('sqlite:///:memory:', echo=True)
metadata = MetaData()
hockey= Table('hockey', metadata,
Column('team', String(16), primary_key=True),
Column('jersey_colour', String(16)),
Column('stadium', String(32)),
Column('goals', Integer),
Column('date', Date, primary_key=True),
Column('assists', Integer))
>>>data[0]
{'jersey_colour': u'Blue',
'team': u'Toronto Maple Leafs',
'stadium': u'Air Canada Center',
'date': '2013-03-25',
'assists': 301,
'goals': 151}
>>>data[1]
{'jersey_colour': u'Red',
'team': u'Calgary Flames',
'stadium': u'PenWest',
'date': '2013-03-25',
'assists': 254,
'goals': 147}
conn = engine.connect()
conn.execute(ins, data)
StatementError:SQLiteの日付型はPythonの日付オブジェクトのみを入力として受け入れます。(元の原因:TypeError:SQLite DateタイプはPythonの日付オブジェクトのみを入力として受け入れます。)'INSERT INTO "hockey"(team、jersey_colour、stadium、goals、date、assists)VALUES(?、?、?、?、?、? )'[{' jersey_colour':'ブルー'、'チーム':'トロントメープルリーフス'、'スタジアム':u'エアカナダセンター'、'日付':' 2013-03-25'、'アシスト':301 、'目標':151}
最初の質問-パラメータが'に供給される順序は?' 案件。ご覧のとおり、フィールドは次のように表示されます。
team jersey_colour stadium goals date assists
ただし、辞書の順序は任意です。
jersey_colour team stadium date assists goals
これはsqliteまたはmysqlの問題ですか?理論的にはキーが提供されているので、データをどこに保存するかがわかるはずですが、よくわかりません。本番環境ではmysqlデータベースを使用しますが、テストではインメモリsqlitedbを使用します。
2番目の質問、エラー:
StatementError: SQLite Date type only accepts Python date objects as input
私は次のことを見つけました(https://groups.google.com/forum/?fromgroups=#!topic/sqlalchemy/EeZbkePPb38)。
SQLiteには特にDATE型はありません。SQLAlchemyのDate()型は、Pythonの日時、つまり「import datetime; date = datetime.date(year、monthday)」を想定しています。
データキーとペアになっている値は、コメンテーターが上で述べたことに従って、Pythonのdatetime.dateコマンドによって作成されます。
>>>today_date = datetime.date.today()
そのため、エラーが発生している理由がわかりません。質問1と2の両方についてご協力いただきありがとうございます。ありがとうございました。