Python 创建sqlalchemy数据库失败
我正试图通过以下方式导入我的应用程序配置(Python 创建sqlalchemy数据库失败,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,我正试图通过以下方式导入我的应用程序配置(db_config.py): 收到错误导入错误:没有名为'app.db_config'的模块“应用程序”不是软件包 app.py看起来像: import pymysql.cursors from flask import Flask, render_template, request from flask_migrate import Migrate from app.db_config import db_session #app setup app
db_config.py
):
收到错误导入错误:没有名为'app.db_config'的模块“应用程序”不是软件包
app.py
看起来像:
import pymysql.cursors
from flask import Flask, render_template, request
from flask_migrate import Migrate
from app.db_config import db_session
#app setup
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mypass@localhost/mydb'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
@app.teardown_appcontext
def shutdown_session(exception=None):
db_session.remove()
@app.route('/', methods=('GET', 'POST'))
def index():
return 'meow'
if __name__ == '__main__':
app.run()
db_config.py
:
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('mysql+pymysql://root:mypass@localhost/mydb',
convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
def init_db():
import app.db_table
Base.metadata.create_all(bind=engine)
db_table.py
:
from sqlalchemy import Column, Integer, String, DateTime, Boolean
from sqlalchemy.ext.declarative import declarative_base
from app.db_config import Base
Base = declarative_base()
class Tld(Base):
__tablename__ = 'Tld'
id = Column(Integer, primary_key=True)
uri = Column(String(80), unique=True)
tmstmp = Column(DateTime())
auth = Column(Boolean())
def __init__(self, uri=None):
self.uri = uri
self.tmstmp = tmstmp
self.auth = auth
我做错了什么?我正在跟踪,但我没有收到我预期的输出
我的app.pyapp.py是否有什么问题导致它不能像那样调用?还是别的什么问题
(第一次alchemy
user)
非常感谢我自己解决了这个问题。我需要从db\u config import db\u session执行,而不是从app.db\u config import db\u session执行,我想您的包也被命名为app
。所以这里有命名冲突。当模块名为app.py时,Python尝试从模块导入db\u config
。尝试重命名您的模块(我使用\uuuu init\uuuu.py
)。
from sqlalchemy import Column, Integer, String, DateTime, Boolean
from sqlalchemy.ext.declarative import declarative_base
from app.db_config import Base
Base = declarative_base()
class Tld(Base):
__tablename__ = 'Tld'
id = Column(Integer, primary_key=True)
uri = Column(String(80), unique=True)
tmstmp = Column(DateTime())
auth = Column(Boolean())
def __init__(self, uri=None):
self.uri = uri
self.tmstmp = tmstmp
self.auth = auth