2011-12-15 7 views
0

初心者からSQLAlchemyへ。新しいSQLAlchemyレコードエラーの追加

レコードの追加に問題があります。私は複数の値を渡すチュートリアルの後にaddをモデル化しました(ハードコードされた値ですが)。添付はルーチンとエラーです。

StackOverflowは私の 'explain to code'比率がオフだと思うので、私は私のクエリを提出することができるように追加の説明を追加します。

import pdb 
from table import wrl 
from sqlalchemy import or_, and_, desc, asc 
from sqlalchemy import create_engine 
from sqlalchemy.orm import sessionmaker 

rs = create_engine('credentials', echo=True) 
aws = create_engine('credentials', echo=True) 

rs_session = sessionmaker(bind=rs) 
aws_session = sessionmaker(bind=aws) 

rs = rs_session() 
aws = aws_session() 

# pdb.set_trace() 

y = rs.query(wrl).order_by(wrl.UUID_PK).first() 

cat = y.Added_Timestamp #now we have the oldest record time stamp value 

query_string = cat[:8]+"%"  #now we have the oldest record's date i.e. substring(20111215_121212;1;8) 

move_me = rs.query(wrl).filter(wrl.Added_Timestamp.like(query_string)).limit(10) 
pdb.set_trace() 

for x in move_me: 
#  pdb.set_trace() 
    wrl_rec = wrl(x.UUID_PK, 
       x.Web_Request_Headers, 
       x.Web_Request_Body, 
       x.Current_Machine, 
       x.Current_Machine, 
       x.ResponseBody, 
       x.Full_Log_Message, 
       x.Remote_Address, 
       x.basic_auth_username, 
       x.Request_Method, 
       x.Request_URI, 
       x.Request_Protocol, 
       x.Time_To_Process_Request, 
       x.User_ID, 
       x.Error, 
       x.Added_Timestamp, 
       x.Processing_Time_Milliseconds, 
       x.mysql_timestamp) 
    aws.add(wrl_rec) 
    aws.commit() 
    print 'added %s ' % x.UUID_PK 


Traceback (most recent call last): 
    File "migrate.py", line 47, in <module> 
    x.mysql_timestamp) 
TypeError: __init__() takes exactly 1 argument (19 given) 

ご了承ください。

+1

wrlとは何ですか?テーブルのインポートwrlからあなたのモジュールまたは任意のpythonモジュールですか? – Nilesh

+0

これは私のテーブル定義です。申し訳ありませんが、私はこれで新しいので、私は私が知らないものを知らない。それが問題の原因です。ありがとう。 –

答えて

0

問題は実際にはSAに関連していません。私の推測では、コンストラクタ(wrl.__init__(self, ...))が定義されていないか、またはwrl_recにこのオブジェクトを作成するときに指定しようとしている定位置引数をとりません。

基本的に、このエラーメッセージは、あなたの問題をほぼ示しています。

サイドノートで、order_by(wrl.UUID_PK)は実際にあなたのコメントとしてタイムスタンプで最も古いレコードを返しますか?どういうわけか私はそれを非常に疑う。

+0

存在しない__init__関数を追加して、それが何であるかを確認します。そして、あなたはorder_byについて正しいです。他のテストの目的のためにそれを微調整し、揺れませんでした。ありがとう。 –