2010-11-18 59 views
0
Engine = create_engine("mysql+mysqldb://blah-blah-blah", encoding="utf-8") 
Session = sessionmaker(bind = Engine) 
ses = Session() 
Meta = MetaData(bind = Engine, reflect = True) 
PersonTable = Meta.tables["person"] 

class Person(object): 
    pass 

mapper(Person, PersonTable) 
APerson = Person("1111", "2222", "1.01.1980") 
ses.add(APerson) 
ses.commit() 

sqlalchemy.exc.ProgrammingError:(ProgrammingError)(1064,“您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的“正确的语法手册('%s,%s,%s)'在第1行)'b'INSERT INTO person(Name,OriginalName,DoB)VALUES(%s,%s,%s)'('1111','2222','25 .01 .1980')Python 3,SQLAlchemy,MySQL。在INSERT语句的语法不正确

什么是%s?我错了什么?

的Python 3.1 SQLAlchemy的0.6.5 MySQL 5.1中 Windows 7旗舰版

谢谢。

+0

它是一个C风格的打印事物,其中每个%s分别代表字符串值“1111”,“222”和“25 .01.1980”。我不知道sqlalchemy为了帮助你解决这个问题 – 2010-11-18 14:11:03

+0

这里是一个类似的问题,尽管更近期,希望它会有一个有用的答案:http://stackoverflow.com/questions/14732533/pyramid-python3-sqlalchemy-and -mysql – Sheena 2013-02-06 16:33:08

回答

0

您的sqlalchemy提交尝试发出与模式不兼容的插入查询。 near '%s, %s, %s)'表示您试图插入无效数据。我只能推测这是因为日期格式 - 这不是适当的mysql日期格式YYYY-MM-DD

+0

我删除了columb“DoB”,但它没有帮助。同样的错误。 CREATE TABLE'Person'( 'ID' INT(11)NOT NULL AUTO_INCREMENT, 'Name' VARCHAR(255)NOT NULL, 'OriginalName' VARCHAR(255), PRIMARY KEY('ID') ) ENGINE = InnoDB的; – Evgeni 2010-11-19 05:59:22

0

我迁移回Python 2.7。现在它工作正常。