Python SQLAlchemy синтаксическая ошибка - PullRequest
0 голосов
/ 05 сентября 2011

Я получаю сводящую с ума синтаксическую ошибку при запуске следующей программы. Вот ошибка:

  File "Create_the_database.py", line 64

  ^
SyntaxError: invalid syntax

Вот код (длинный, но повторяющийся, поэтому его легко просмотреть):

import sqlalchemy
from sqlalchemy import *

engine = create_engine('sqlite:///Users/benscholz/Dropbox/OmniCloud/omnicloud/dev.db')
meta = MetaData()
createUsersTable()
createAccountsTable()
createPasswordsTable()
meta.bind = engine
meta.create_all(engine)

def createUsersTable():
    print("creating User Table")
    users = Table('users', metadata,
        Column('id', Integer, primary_key = True),
        Column('username', String, nullable = False),
        Column('email_address', String, nullable = False),
        Column('first_name', String),
        Column('full_name', String),
        Column('join_date', DateTime))

def createAccountsTable():
    print("creating Accounts Table")
    accounts = Table('accounts', metadata,
        Column('user_id', ForeignKey('users.id')),
        Column('facebook_username', String),
        Column('email_username_1', String),
        Column('email_username_2', String),
        Column('email_username_3', String),
        Column('email_username_4', String),
        Column('email_username_5', String),
        Column('twitter_username_1', String),
        Column('twitter_username_2', String),
        Column('twitter_username_3', String),
        Column('klout_username', String),
        Column('dropbox_username', String),
        Column('box_username', String),
        Column('flickr_username_1', String),
        Column('flickr_username_2', String),
        Column('instagram_username', String),
        Column('disqus_username', String),
        Column('stack_overflow_username', String))

def createPasswordsTable():
    print("creating Passwords Table")
    passwords = Table('passwords', metadata,
        Column('user_id', ForeignKey('users.id')),
        Column('facebook_pass', String),
        Column('email_pass_1', String),
        Column('email_pass_2', String),
        Column('email_pass_3', String),
        Column('email_pass_4', String),
        Column('email_pass_5', String),
        Column('twitter_pass_1', String),
        Column('twitter_pass_2', String),
        Column('twitter_pass_3', String),
        Column('klout_pass', String),
        Column('dropbox_pass', String),
        Column('box_pass', String),
        Column('flickr_pass_1', String),
        Column('flickr_pass_2', String),
        Column('instagram_pass', String),
        Column('disqus_pass', String),
        Column('stack_overflow_pass', String))

Программа длиной 64 строки, так что, кажется, она подходит к концу и ожидает ... что-то?

1 Ответ

1 голос
/ 05 сентября 2011

Это исправно для меня после исправления двух вещей.

  1. Переменная мета должна быть метаданными.2-й аргумент Table () ссылается на глобальную переменную.
  2. Строки от createUsersTable () до metadata.create_all (engine) должны быть перемещены вниз.Функции нельзя вызывать до их определения.

Что касается синтаксической ошибки, я думаю, в файле есть недопустимые символы в последней строке, которые не могут быть напечатаны на экране.Мое предложение состоит в том, чтобы удалить последнюю строку и повторите ввод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...