On Dec 18, 2011, at 1:25 PM, Lee Hinde wrote: > I'm brand new to sqlalchemy, and reasonably new to python. I'm working on > migrating data from one MySQL database to another at Amazon's RDS. > > I have one TinyInt field,'Error' and if the value in that field is 1, then I > get a warning from MySQLdb : > > /Library/Python/2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg/MySQLdb/cursors.py:206: > Warning: Incorrect integer value: 'appuser_id' for column 'Error' at row 1 > /Library/Python/2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg/MySQLdb/cursors.py:206: > Warning: Incorrect integer value: '' for column 'Error' at row 1 > /Library/Python/2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg/MySQLdb/cursors.py:206: > Warning: Incorrect integer value: 'TEST-USER-WITH-FULL-PREFS-AND-FAVES' for > column 'Error' at row 1 > > The incorrect value being reported is from the varchar User_ID field. > Everything but the Error field gets migrated fine, including the User_ID > field which this warning would suggest is in the wrong column. If Error == 0, > no warning is issued.
This means you're assigning a string value to an integer field in a statement. When you do your thing with wrl(...fields...), make sure all the fields match up to their types/names correctly. you can also put a @validates to check for it: class MyClass(Base): ... @validates('Error') def check_for_int(self, key, value): if not isinstance(value, int): raise TypeError("integer expected here") return value see http://www.sqlalchemy.org/docs/orm/mapper_config.html#simple-validators > > Any pointers appreciated. > > The structures of the sending and receiving tables are identical. As reported > by sqlalchemy's reflection tool: > > UUID_PK VARCHAR(36) > Web_Request_Headers TEXT > Web_Request_Body TEXT > Current_Machine VARCHAR(40) > HTTP_StatusSent INTEGER(11) > ResponseBody MEDIUMTEXT > Full_Log_Message TEXT > Remote_Address VARCHAR(60) > basic_auth_username VARCHAR(30) > Request_Method VARCHAR(12) > Request_URI VARCHAR(60) > Request_Protocol VARCHAR(12) > Time_To_Process_Request INTEGER(11) > User_ID VARCHAR(36) > Error TINYINT(4) > Added_Timestamp VARCHAR(16) > Processing_Time_Milliseconds INTEGER(11) > mysql_timestamp TIMESTAMP > > I have this model.py: > > from sqlalchemy.ext.declarative import declarative_base > > Base = declarative_base() > > from sqlalchemy import Column, Integer, String, Text, DateTime, SmallInteger > > class wrl(Base): > __tablename__ = 'web_request_log' > UUID_PK = Column(String(36),primary_key=True) > Web_Request_Headers = Column(Text) > Web_Request_Body = Column(Text) > Current_Machine = Column(String(40)) > HTTP_StatusSent = Column(Integer) > ResponseBody = Column(Text) > Full_Log_Message = Column(Text) > Remote_Address = Column(String(60)) > basic_auth_username = Column(String(30)) > Request_Method = Column(String(12)) > Request_URI = Column(String(60)) > Request_Protocol = Column(String(12)) > Time_To_Process_Request = Column(Integer) > User_ID = Column(String(36)) > Error = Column(SmallInteger) > Added_Timestamp = Column(String(16)) > Processing_Time_Milliseconds = Column(Integer) > mysql_timestamp = Column(DateTime) > > > def > __init__(self,UUID_PK,Web_Request_Headers,Web_Request_Body,Current_Machine,HTTP_StatusSent,ResponseBody,Full_Log_Message, > Remote_Address, > > basic_auth_username,Request_Method,Request_URI,Request_Protocol,Time_To_Process_Request,User_ID,Error,Added_Timestamp,Processing_Time_Milliseconds, > mysql_timestamp): > self.UUID_PK = UUID_PK > self.Web_Request_Headers = Web_Request_Headers > self.Web_Request_Body = Web_Request_Body > self.Current_Machine = Current_Machine > self.HTTP_StatusSent = HTTP_StatusSent > self.ResponseBody = ResponseBody > self.Full_Log_Message = Full_Log_Message > self.Remote_Address = Remote_Address > self.basic_auth_username = basic_auth_username > self.Request_Method = Request_Method > self.Request_URI = Request_URI > self.Request_Protocol = Request_Protocol > self.Time_To_Process_Request = Time_To_Process_Request > self.User_ID = User_ID > self.Error = User_ID > self.Added_Timestamp = Added_Timestamp > self.Processing_Time_Milliseconds = Processing_Time_Milliseconds > self.mysql_timestamp = mysql_timestamp > > > And I have this method: > > #login and query stuff, which is working fine, removed; > > for x in move_me: > wrl_rec = wrl(x.UUID_PK, > x.Web_Request_Headers, > x.Web_Request_Body, > x.Current_Machine, > x.HTTP_StatusSent, > 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) > try: > aws.add(wrl_rec) > print 'added %s' % x.UUID_PK > except Exception, E: > print 'error %s' % x.UUID_PK > print E > else: > rs.delete(x) > try: > aws.commit() # if we can commit the aws push, then it's ok to commit the > delete on RS > except Exception, E: > print 'error %s' % E > else: > rs.commit() > > > > > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalchemy@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.