0

SQLAlchemy でセッションを使用して追加を実行しようとすると、現在次のエラーが発生します。

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)' at line 1") b'INSERT INTO ctr_status (`Name`) VALUES (%s)' ('Test',)

コードは次のとおりです。

from sqlalchemy import MetaData, Table
from sqlalchemy import create_engine, orm

# Login omitted...

url = 'mysql+mysqldb://{user}:{password}@{host}:{port}/{database}'.format(user=user, password=password, host=host, port=port, database=database)
e = create_engine(url, echo=True)
metadata = MetaData()
metadata.bind = e
metadata.create_all()
ctr_status = Table('ctr_status', metadata, autoload=True)

class CTRStatus(object):
    pass
orm.mapper(CTRStatus, ctr_status)
new_status = CTRStatus()
new_status.Name = 'Test'

session_maker = orm.sessionmaker(bind=e, autoflush=True, autocommit=False, expire_on_commit=True)
session = orm.scoped_session(session_maker)
session.add(new_status)

# Crash here at flush
session.flush()

私は何が間違っているのか混乱しています。現在、MySQL 5.5Python 3.3.2、およびSQLAlchemy-0.8.2.win32-py3.3 を使用しています。

ここに私がたどってきたリンクのいくつかがあります:

SQL Alchemy - チュートリアル

SQL Alchemy - セッション

4

1 に答える 1

0

アダプターをOurSQLに切り替え、URL をmysql+oursqlを使用するように変更することで、なんとか機能させることができました。

Python 3.3 のセットアップで OurSQL を動作させるのは驚くほど簡単ではなかったことを付け加えたいと思います。

  1. Cython によって自動生成されるように、最初にダウンロードしたファイルからoursqlx/oursql.cを削除する必要がありました。
  2. setup_windowsish()の mysql_root 変数の間違ったレジストリ パスを指していたため、setup.py も手動で変更する必要がありました。基本的に、現在の実装は MySQL Server 5.5 をサポートしていないようであり、レジストリ パスが HKEY_LOCAL_MACHINE ではなく HKEY_CURRENT_USER にある場合もサポートしていません。
于 2013-08-16T15:07:10.883 に答える