Python - 如何在Flask中使用SQLALCHEMY创建多个数据库?

-1 投票
1 回答
34 浏览
提问于 2025-04-14 15:38

我正在用Flask制作一个网页应用,使用SQLALCHEMY来管理数据库。

我需要存储在多个数据库中。例如:“user_database.sb”和“teacher_database.db”。

我查阅了相关文档想要实现这个功能,但当我在代码中尝试使用时,出现了这个错误:

ModuleNotFoundError: 没有名为'MySQLdb'的模块

这是我的代码:

   path = os.path.abspath(os.path.dirname(__file__))
   
   app = Flask(__name__)

   app.config['SECRET_KEY'] = 'secretkey'
   app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(path, 'databaseteste.db')
   app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
   app.config['SQLALCHEMY_BINDS'] = {
      'user_database': 'mysql:///root:password@localhost/userdatabase'
   }
   
   
   db = SQLAlchemy(app)
   
   # User model to database
   class User(UserMixin, db.Model):
       __bind_key__ = 'user_database'
       id = db.Column(db.Integer, primary_key=True)
       username = db.Column(db.String(64), index=True, unique=True)
       email = db.Column(db.String(120), unique = True, index = True)
       password_hash = db.Column(db.String(128))
       joined_at = db.Column(db.DateTime(), default = datetime.utcnow, index = True)
   
       def __repr__(self):
           return f'User {self.username}'
       
       def set_passoword(self, password):
           self.password_hash = generate_password_hash(password)
   ...

有人能帮我找出我哪里做错了吗?

1 个回答

1

我找到了代码中的问题。

我只是把 app.config['SQLALCHEMY_BINDS'] 里的根路径改了一下。

path = os.path.abspath(os.path.dirname(__file__))
   
   app = Flask(__name__)

   app.config['SECRET_KEY'] = 'secretkey'
   app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(path, 'databaseteste.db')
   app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
   app.config['SQLALCHEMY_BINDS'] = {
      'user_database': 'mysql:///root:password@localhost/userdatabase'
   }
   

我把路径改成了我的,然后把 mysql 改成了 sqlite

'user_database': 'sqlite:///' + os.path.join(path, 'database/user_database.db')

撰写回答