1. 程式人生 > >flask學習:連線mysql資料庫並建表

flask學習:連線mysql資料庫並建表

1.首先要下載 flask_sqlalchemy 和  flask_mysqldb。

一般在pycharm中可以搜尋到並且下載。如果出現問題,可以百度一下。

2.配置資料庫的相關設定:

root:root,前一個是資料庫使用者名稱,後一個是密碼。

#配置資料庫的地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]: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:[email protected]: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)