0
我有一个项目,我正在处理,我得到一个小错误,阻止我创建所有表和我的数据库。我收到以下错误:sqlalchemy数据库创建错误
[email protected]:/vagrant/PayUp$ python setup_database.py
Traceback (most recent call last):
File "setup_database.py", line 22, in <module>
class Users(Base):
File "/usr/lib/python2.7/dist-packages/sqlalchemy/ext/declarative/api.py", line 50, in __init__
_as_declarative(cls, classname, cls.__dict__)
File "/usr/lib/python2.7/dist-packages/sqlalchemy/ext/declarative/base.py", line 227, in _as_declarative
if not table.c.contains_column(c):
AttributeError: 'str' object has no attribute 'c'
和我使用如下代码:
#The following are all of the standard imports that are needed to run the database
import os
import sys
from sqlalchemy import Column, ForeignKey, Integer, String, Index
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from sqlalchemy import create_engine
#The following is what will create the declarative_base base that will be imported to every tables
Base = declarative_base()
#The following is the user table which will store the users id and username
class Users(Base):
__table__ = 'users'
id = Column(Integer, primary_key = True)
user_name = Column(String(16), nullable = False, unique = True, index = True)
class User_Auth(Base):
__table__ = 'user_auth'
id = Column(Integer, primary_key = True)
last_name = Column(String(16), nullable = False)
first_name = Column(String(16), nullable = False)
password = Column(String(225), nullable = False)
class User_Info(Base):
__table__ = 'user_info'
id = Column(Integer, primary_key = True)
email = Column(String(50), nullable = False, index = True, unique = True)
phone = Column(Integer(12), nullable = True, unique = True)
age = Column(Integer(2), nullable = False)
gender = Column(String(2), nullable = True)
class User_Location(Base):
__table__ = 'user_location'
id = Column(Integer, primary_key = True)
street = Column(String(200), mullable = False)
city = Column(String(35), nullable = False)
state = Column(String(3), nullable = False)
zip_code = Column(Integer(5), nullable = False, index = True)
engine = create_engine('sqlite:///payup.db')
Base.metadata.create_all(engine)
更换__table__是啊,我完全忘了tot加名字。有效。谢谢 –