【问题标题】:Python 3, SQLAlchemy, MySQL. Incorrect syntax in INSERT statementPython 3、SQLAlchemy、MySQL。 INSERT 语句中的语法不正确
【发布时间】:2011-05-12 01:31:26
【问题描述】:
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')

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

Python 3.1 SQLAlchemy 0.6.5 MySQL 5.1 Windows 7 旗舰版

谢谢。

【问题讨论】:

  • 它是一个 C 风格的打印东西,其中每个 %s 应该分别对应字符串值 '1111'、'222' 和 '25.01.1980'。我不知道 sqlalchemy 来帮你解决这个问题
  • 这里有一个类似的问题,虽然是最近的,但希望它会有一个有用的答案:stackoverflow.com/questions/14732533/…

标签: mysql sqlalchemy python-3.x


【解决方案1】:

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

【讨论】:

  • 我删除了 columb "DoB",但没有帮助。同样的错误。创建表 Person( ID INT(11) NOT NULL AUTO_INCREMENT, Name VARCHAR(255) NOT NULL, OriginalName VARCHAR(255), PRIMARY KEY (ID) ENGINE=InnoDB;
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 2018-09-25
    相关资源
    最近更新 更多