Алхимия Sql Что не так?

Я получил учебное руководство

http://www.rmunn.com/sqlalchemy-tutorial/tutorial.html

То, когда я компилирую, получило сообщение об ошибке

The debugged program raised the exception unhandled NameError
"name 'BoundMetaData' is not defined"

Я - использование последний sqlAlchemy.

Как Мог, я зафиксировал это?

После того, как считано это я изменил к своему собственному для последней версии sqlAlchemy:

from sqlalchemy import *
engine = create_engine('mysql://root:mypassword@localhost/mysql')
metadata = MetaData()
users = Table('users', metadata,
    Column('user_id', Integer, primary_key=True),
    Column('name', String(40)),
    Column('age', Integer),
    Column('password', String),
)
metadata.create_all(engine) 
i = users.insert()
i.execute(name='Mary', age=30, password='secret')
i.execute({'name': 'John', 'age': 42},
          {'name': 'Susan', 'age': 57},
          {'name': 'Carl', 'age': 33})
s = users.select()
rs = s.execute()
row = rs.fetchone()
print 'Id:', row[0]
print 'Name:', row['name']
print 'Age:', row.age
print 'Password:', row[users.c.password]
for row in rs:
    print row.name, 'is', row.age, 'years old

Это повышает ошибку

 raise exc.DBAPIError.instance(statement, parameters, e, connection_invalidated=is_disconnect)
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 ' \n\tPRIMARY KEY (user_id)\n)' at line 5") '\nCREATE TABLE users (\n\tuser_id INTEGER NOT NULL AUTO_INCREMENT, \n\tname VARCHAR(40), \n\tage INTEGER, \n\tpassword VARCHAR, \n\tPRIMARY KEY (user_id)\n)\n\n' ()

12
задан Joel 1 February 2014 в 02:56
поделиться

2 ответа

В этом руководстве для SQLALCHEMY версии 0.2. Поскольку фактическая версия составляет 0,5,7, я бы сказал, что учебник строго устарел.

Попробуйте официальное значение .


Редактировать:

Теперь у вас совершенно другой вопрос. Вы должны были задавать еще один вопрос, а не редактировать этот.

Ваша проблема сейчас в том, что

Column('password', String),

не указывает размер для столбца.

Старт

Column('password', String(20)),

вместо этого.

18
ответ дан 2 December 2019 в 03:25
поделиться

Я считаю, что вам нужно указать длину вашего пароля .

Column('password', String(100))

MySQL не позволяет неограниченным столбцам Varchar. Если вам нужно, используйте текст SQLALCHEMY DataType вместо этого.

2
ответ дан 2 December 2019 в 03:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: