简体   繁体   English

使用 Flask、SQLAlchemy 连接到 MySQL 数据库

[英]Connect to MySQL database using Flask, SQLAlchemy

I want to connect to MySQL database using Flask.我想使用 Flask 连接到MySQL数据库。 Below is my code:下面是我的代码:

app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'admin'
app.config['MYSQL_PASSWORD'] = '********'
app.config['MYSQL_DB'] = 'abc'

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://admin:********@localhost/abc'

api = Api(app)
db = SQLAlchemy(app)
ma = Marshmallow(app)

db.create_all()

class Video(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    videoid = db.Column(db.String(80), unique=True)
    video_timestamp = db.Column(db.Integer, unique=True)

    def __init__(self, videoid, video_timestamp):
        self.videoid = videoid
        self.video_timestamp = video_timestamp

and I met this error:我遇到了这个错误:

sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1146, "Table 'abc.video' doesn't exist") [SQL: 'SELECT video.id AS video_id, video.videoid AS video_videoid, video.video_timestamp AS video_video_timestamp \\nFROM video'] sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1146, "Table 'abc.video' 不存在") [SQL: 'SELECT video.id AS video_id, video.videoid AS video_videoid, video.video_timestamp AS video_video_timestamp \\nFROM video']

I know how to connect to SQLite database, but it seems difficult to connect to MySQL database?我知道如何连接到SQLite数据库,但是连接到MySQL数据库似乎很困难?

Anyone can help me, please?任何人都可以帮助我,好吗?

You don't have a problem to connect to your database but it looks like your table are not created yet.您连接到数据库没有问题,但您的表似乎尚未创建。 so remove the db.create_all() in your code and check this from the sql_alchemy official documentation :所以删除代码中的db.create_all()并从sql_alchemy 官方文档中检查:

To create the initial database, just import the db object from an interactive Python shell and run the SQLAlchemy.create_all() method to create the tables and database:要创建初始数据库,只需从交互式 Python shell 导入 db 对象并运行 SQLAlchemy.create_all() 方法来创建表和数据库:

from yourapplication import db
db.create_all()

The code to connect to Mysql:连接Mysql的代码:

from flaskext.mysql import MySQL

cursorclass, and autocommit to make life easier游标类和自动提交使生活更轻松

mysql = MySQL(autocommit=True, cursorclass= DictCursor)
app.config['SECRET_KEY'] = 'Thisissupposedtobesecret!'
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = 'root'
app.config['MYSQL_DATABASE_DB'] = 'db'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
app.config['MYSQL_DATABASE_PORT'] = 8889
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'
mysql.init_app(app)

connect cursor 
cursor = conn.cursor()

You can download xxamp or Mamp and host database online at phpmyadmin (localhost)您可以在 phpmyadmin (localhost) 在线下载 xxamp 或 Mamp 和主机数据库

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM