Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建sqlalchemy数据库失败_Python_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

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.py
app.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