我制作了一个使用 sqlite3 可以正常工作的金字塔应用程序。对于生产,我需要使用 mysql。
在我的 initialize_db 脚本中,我创建了一个用户。运行脚本会产生以下错误:
sqlalchemy.exc.ProgrammingError: (ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s, %s, %s, %s, %s, %s, %s)' at line 1") b'INSERT INTO auth_users (email_address, username, salt, password, is_staff, is_super, is_active) VALUES (%s, %s, %s, %s, %s, %s, %s)' ('stuff@gmail.com', 'admin', '1371576670.410974', "b'S\\x1a\\x12\\xab\\xa2a\\x12\\xffF~\\xd98\\xcd1\\xf4l'", 1, 1, 1)
但是,如果我使用 mysql shell 这工作正常:
INSERT INTO auth_users (email_address, username, salt, password, is_staff, is_super, is_active) VALUES ('stuff@gmail.com', 'admin', '1371576670.410974', "b'S\\x1a\\x12\\xab\\xa2a\\x12\\xffF~\\xd98\\xcd1\\xf4l'", 1, 1, 1);
auth_user 的表如下所示:
class User(Base,BaseExtension):
__tablename__ = 'auth_users'
id = Column(Integer,Sequence('user_seq'), primary_key=True)
email_address = Column(String(255))
username = Column(String(50))
salt = Column(String(20))
#password = Column(Unicode(40))
password = Column(LargeBinary(17))
is_staff = Column(Boolean)
is_super = Column(Boolean)
is_active = Column(Boolean)
新用户的创建方式如下:
super1 = User('sheena.oconnell@gmail.com','some_password_that_gets_salted_and_md5ed')
super1.username = 'admin'
super1.is_active = True
super1.is_super = True
super1.is_staff = True
DBSession.add(super1)
super1.groups.append = UserGroup('super')
我正在运行 Python3.2 并使用mysql for python 3作为驱动程序。
有任何想法吗?