1

sqlite3 を使用して正常に動作するピラミッド アプリを作成しました。本番環境では、mysql を使用する必要があります。

私の initialize_db スクリプトでは、1 人のユーザーを作成します。スクリプトを実行すると、次のエラーが発生します。

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 シェルを使用すると、これは正常に機能します。

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 を実行しており、python 3の mysql をドライバーとして使用しています。

何か案は?

4

1 に答える 1