我正在尝试创建简单的GUI python应用程序来填充现有的MYSQL数据库。我应该使用sqlalchemy连接到服务器吗?我只是想知道Alchemy如何连接到使用MYSQL工作台创建的现有数据库? 通常我使用sqlalchemy创建数据库和表,这就是我可以查询和编辑它的原因。但是对于这种情况,数据库已经创建。我想问题是如何创建现有数据库的SQLAlchemy代码? 抱歉没有更好的词来解释我的问题。我对数据库并不熟悉。
答案 0 :(得分:1)
您可以使用sqlacodegen为现有数据库中的模型生成python代码。您还可以使用SQLAlchemy的内置功能reflect the tables甚至map them to classes在运行时动态加载所有内容。 SQLAlchemy并不关心数据库的来源,只是它的位置和外观。
答案 1 :(得分:0)
要使用SQLAlchemy连接到数据库中的现有表,即使未使用SQLAlchemy创建表也很容易。 为此,您需要使用flask框架和flask-sqlalchemy
app = Flask(__name__)
app.secret_key = "any key"
db = SQLAlchemy(app)
app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql://root@localhost/database_name'
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db.init_app(app)
需要创建类以将它们映射到数据库中的表。 举例说,数据库有一个名为STUDENT的表,该表的类将是这样
class Student(db.Model):
__tablename__ = "STUDENT"
id= db.Column(db.Integer , primary_key = True , nullable=False)
name = db.Column(db.Integer)
address= db.Column(db.String)
grade= db.Column(db.String)
year = db.Column(db.Integer)
要获取SQLAlchemy数据类型:https://docs.sqlalchemy.org/en/13/core/types.html 同样,也可以为其他表创建其他类。 为了对数据执行任何操作,必须使用类对象类型。 假设您想获取学生名单
stu_obj = Student.query.all()
这将为您提供学生表中所有行的列表。 对于SQLAlchemy ORM查询 :https://www.tutorialspoint.com/sqlalchemy/sqlalchemy_orm_declaring_mapping.htm