flask学习:连接mysql数据库并建表

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xckkcxxck/article/details/83184033

1.首先要下载 flask_sqlalchemy 和  flask_mysqldb。

一般在pycharm中可以搜索到并且下载。如果出现问题,可以百度一下。

2.配置数据库的相关设置:

root:root,前一个是数据库用户名,后一个是密码。

#配置数据库的地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@localhost:3306/flask_sql_demo'
#跟踪数据库的修改,不建议开启
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

3.在mysql数据库中建表:

create database flask_sql_demo charset='utf8';

4.建立与数据库表相对应的python类

class Role(db.Model):
    #定义表名
    __tablename__ = 'roles'
    #定义字段
    #db.Column 表示是一个字段
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(16), unique=True)

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(16), unique=True)
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))

5.执行  :db.create_all()

此时在mysql中执行show tables;命令,可以看到已经成功建立了新表。

6.进入IPython,可以利用以下代码进行增删改查。

In [2]: role = Role(name='admin')

In [3]: db.session.add(role)     #增

In [4]: db.session.commit()

In [5]: user = User(name='xck', role_id=role.id)

In [8]: user.name='xckkcx'       #改

In [9]: db.session.commit()

In [10]: db.session.delete(user)   #删

In [11]: db.session.commit()

完整的代码在下面:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

#配置数据库的地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@localhost:3306/flask_sql_demo'
#跟踪数据库的修改,不建议开启
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

'''
两张表(管理员/普通用户)
用户(角色ID)
'''

class Role(db.Model):
    #定义表名
    __tablename__ = 'roles'
    #定义字段
    #db.Column 表示是一个字段
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(16), unique=True)

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(16), unique=True)
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))

db.drop_all()
db.create_all()
@app.route('/')
def index():
    return "hahah"

if __name__ == '__main__':

    app.run(debug=True)
扫描二维码关注公众号,回复: 4245590 查看本文章

猜你喜欢

转载自blog.csdn.net/xckkcxxck/article/details/83184033