programing

플라스크에서 MySQL 사용

closeapi 2023. 11. 7. 20:52
반응형

플라스크에서 MySQL 사용

MySQL DB에 액세스하는 방법에 대한 예제 코드를 플라스크에서 공유할 수 있는 사람이 있습니까?sqlite에 연결하는 방법을 보여주는 문서가 있지만 MySql에는 연결되지 않습니다.

미리 감사드립니다.

우선 Flask-MySQL 패키지를 설치해야 합니다.사용.pip예를 들어 다음과 같습니다.

pip install flask-mysql

다음으로 구성을 추가하고 MySQL을 초기화해야 합니다.

from flask import Flask
from flaskext.mysql import MySQL

app = Flask(__name__)
mysql = MySQL()
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = 'root'
app.config['MYSQL_DATABASE_DB'] = 'EmpData'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql.init_app(app)

이제 연결 및 커서 개체를 가져오고 원시 쿼리를 실행할 수 있습니다.

conn = mysql.connect()
cursor =conn.cursor()

cursor.execute("SELECT * from User")
data = cursor.fetchone()
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@server/db'
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username

도움말 링크

pymysql을 사용하면 매우 간단합니다.

from flask import Flask, request, render_template
import pymysql

db = pymysql.connect("localhost", "username", "password", "database")

app = Flask(__name__)
api = Api(app)

@app.route('/')
def someName():
    cursor = db.cursor()
    sql = "SELECT * FROM table"
    cursor.execute(sql)
    results = cursor.fetchall()
    return render_template('index.html', results=results)

if __name__ == '__main__':
app.run(debug=True)

index.html 파일에서 다음과 같은 작업을 수행합니다.

<div>
<% for row in results %}
      <tr>
         <td>{{ row[0] }}</td>
         <td>{{ row[1] }}</td>
         <td>{{ row[2] }}</td>
         <td>{{ row[3] }}</td>
      </tr>
{% endfor %}
</div>
#!/usr/bin/python
from flask import Flask,jsonify,abort, make_response
import MySQLdb

app = Flask(__name__)

db = MySQLdb.connect("localhost", "root", "yourDbPassWord", "DBname")

@app.route('/api/v1.0/items', methods=['GET'])
def get_items():
    curs = db.cursor()
    try:
        curs.execute("SELECT * FROM items")
        ...

    except:
        print "Error: unable to fetch items"
    return jsonify({"desired: " response})

Mysql로 쉬우세요.

  1. 다음 명령으로 db 만들기

    CREATE TABLE MyUsers ( firstname VARCHAR(30) NOT NULL,  lastname VARCHAR(30) NOT NULL);
    
  2. app.py 파일의 코드 아래에 복사 붙여넣기

    from flask import Flask, render_template, request 
    from flask_mysqldb import MySQL
    
    app = Flask(__name__)
    
    
    app.config['MYSQL_HOST'] = 'localhost'
    app.config['MYSQL_USER'] = 'root'
    app.config['MYSQL_PASSWORD'] = 'root'
    app.config['MYSQL_DB'] = 'MyDB'
    
        mysql = MySQL(app)
    
    
    @app.route('/', methods=['GET', 'POST'])
    def index():
        if request.method == "POST":
            details = request.form
            firstName = details['fname']
            lastName = details['lname']
            cur = mysql.connection.cursor()
            cur.execute("INSERT INTO MyUsers(firstName, lastName) VALUES (%s, %s)", (firstName, lastName))
            mysql.connection.commit()
            cur.close()
            return 'success'
        return render_template('index.html')
    
    
    if __name__ == '__main__':
           app.run()
    

mysql 버전: 5.7

mysql-connector를 사용합니다.python3에 mysql-connector 패키지를 설치합니다.

python3 -m pip install mysql-connector

데이터베이스에 연결하고 쿼리하려면 python 스크립트에서 다음 코드 줄을 사용합니다.

import mysql.connector

database=mysql.connector.connect(host='localhost',user='user',passwd='password',datbase='dbname')
    cursor=database.cursor()
    query="select * from test_table"
    cursor.execute(query)
    database.commit()

추가하기만 하면 됩니다.pymysql당신에게app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@server/db'

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@server/db'

행운을 빌어요.

app.config를 사용하여 mysql을 사용하여 구성을 설정할 수 있습니다.앞으로는 개발 환경만 사용해서는 안되며, 프로덕션 환경에 있는 동안 자동으로 환경을 설정해야 합니다.

우리는 항상 웁스 컨셉을 추구해야 합니다.

우선 생산/개발 환경에 대한 mysql config를 확인하고 설정할 파일을 만들고 app.config로 값을 설정해야 합니다.

# config.py you can put this file anywhere in the project
class Config(object):
    DEBUG = False
    TESTING = False


class DevelopmentConfig(Config):
    """
    Development configurations
    """
    MYSQL_DATABASE_USER = 'root'
    MYSQL_DATABASE_PASSWORD = ''
    MYSQL_DATABASE_HOST = '127.0.0.1'
    MYSQL_DATABASE_DB = 'FlaskProject'  # can be any

    DEBUG = True


class ProductionConfig(Config):
    """
    Production configurations
    """
    MYSQL_DATABASE_USER = 'yourusername'
    MYSQL_DATABASE_PASSWORD = 'yourpassword'
    MYSQL_DATABASE_HOST = 'linktoyourdb' # eg to amazone db :- yourdbname.xxxxxxxxxx.us-east-2.rds.amazonaws.com
    MYSQL_DATABASE_DB = 'yourdbname'

    DEBUG = False

그 사용후에pip3 install flask-mysql

# app.py
from flask import Flask,
from flaskext.mysql import MySQL

app = Flask(__name__)
mysql = MySQL()
if app.config['ENV'] == 'production':
    app.config.from_object('config.ProductionConfig')
else:
    app.config.from_object('config.DevelopmentConfig')
mysql.init_app(app)

@app.route('/')
def yrfunname():
    try:
        conn = mysql.connect()
        cursor = conn.cursor()
        cursor.execute("SELECT * from yrtablename")
        data = cursor.fetchone()
        conn.commit()
        cursor.close()
        return 'success', 200
    except Exception as fail:
        print("Something is wrong with your database user name or password {}".format(fail))
    

이제 플라스크가 환경을 자동으로 처리할 것입니다. 당신은 당신의 코드를 생산에 밀어 넣기만 하면 됩니다.프로젝트가 커지면 dbconn을 계속해서 만들 필요가 없습니다.db 연결을 위해 다른 py 파일을 사용하고 프로젝트의 어느 곳에서나 해당 db 연결을 사용할 수 있습니다.

저도 이 일은 처음이지만 많은 조사를 해서 이것을 얻었습니다.

언급URL : https://stackoverflow.com/questions/9845102/using-mysql-in-flask

반응형