2010-11-18 50 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。現在它工作正常。