Flask에서 MySQL 데이터베이스 연결
이 설명을 통해 flask_mysqldb
를 사용하여 Flask에서 MySQL 데이터베이스를 연결하는 방법을 배웁니다. 또한 온라인으로 데이터베이스를 설정하는 방법도 배웁니다.
flask_mysqldb
의 도움으로 Flask에서 MySQL 데이터베이스 연결
때때로 사용자는 sql-alchemy
와 같은 것을 사용하는 대신 SQL에서 직접 쿼리를 작성하기를 원하므로 이유가 무엇이든 쿼리 SQL을 작성할 수 있는 옵션이 있습니다. Flask에서 mysqldb
를 사용하면 이를 수행할 수 있습니다.
이제 freemysqlhosting.net
이라는 서비스에서 무료 MySQL 데이터베이스를 생성합니다. 이 링크를 사용하여 웹 사이트를 방문할 수 있습니다.
계정 생성 후 아래와 같은 화면이 나타나며, 데이터베이스를 생성하면 15분 이내에 데이터베이스 정보가 포함된 이메일을 받게 됩니다.
이제 Flask 앱 내부의 정보를 위해 이 데이터베이스를 사용할 것입니다. 가장 먼저 할 일은 Flask-MySQLdb
라는 모듈을 설치하는 것입니다.
pip install Flask-MySQLdb
이제 필요한 라이브러리를 가져와야 합니다.
from flask import Flask
from flask_mysqldb import MySQL
이제 앱 인스턴스를 만들고 MySQL(app)
클래스를 사용하여 이 앱을 인스턴스화합니다. 여러 Flask 앱으로 작업하는 경우 다음 코드를 사용하여 Flask 앱을 지정할 수도 있습니다.
mysql = MySQL()
mysql.init_app(app)
그러나 우리는 하나의 파일에 모든 것이 있으므로 이것을 할 필요가 없습니다. 그리고 데이터베이스로 작업하고 있으므로 구성을 설정해야 합니다.
먼저 MYSQL_USER
를 정의한 다음 MYSQL_PASSWORD
가 필요합니다. 또한 데이터베이스가 위치한 MYSQL_HOST
를 정의해야 합니다. 그것은 당신의 로컬 컴퓨터나 우리가 이미 또는 다른 곳에서 설정한 것과 같은 별도의 서비스에 있을 수 있습니다.
데이터베이스 자체도 있으므로 데이터베이스 이름을 정의해야 합니다. 반드시 필요하지 않은 추가 구성을 추가하여 반환된 데이터를 얻는 데 도움이 됩니다.
튜플만 필요하지만 열이 키가 될 수 있고 해당 키의 값이 특정 열의 값이 되기 때문에 데이터베이스와 관련하여 사전을 사용하는 것이 조금 더 쉽습니다. 아무것도 추가하지 않으면 기본적으로 튜플을 사용합니다.
app.config["MYSQL_USER"] = "user_name"
app.config["MYSQL_PASSWORD"] = "user_password"
app.config["MYSQL_HOST"] = "sql3.example.net"
app.config["MYSQL_DB"] = "Database_name"
app.config["MYSQL_CURSORCLASS"] = "DictCursor"
mysql = MySQL(app)
포트를 넣을 수 있지만 MySQL 데이터베이스는 기본적으로 3306을 사용하므로 아무것도 업데이트할 필요가 없습니다. 이제 데이터베이스와 상호 작용하기를 원하므로 경로를 만들고 CONNECT_DB()
라는 함수를 만들고 데이터베이스와 상호 작용하려면 커서를 사용해야 합니다.
커서를 사용하면 명령문을 실행하여 해당 명령문의 결과를 얻을 수 있습니다. CS
라는 변수를 만들고 mysql.connection.cursor()
를 사용하여 인스턴스화하고 테이블도 만들고 TABLE_NAME
이라고 하고 몇 개의 열을 정의합니다.
@app.route("/")
def CONNECT_DB():
CS = mysql.connection.cursor()
CS.execute("""CREATE TABLE TABLE_NAME (id INTEGER, name VARCHAR(20))""")
우리는 이미 테이블을 만들었고 테이블에 데이터를 삽입할 것입니다. 그런 다음 데이터를 삽입하거나 업데이트 또는 삭제한 후 커밋해야 합니다.
또한 데이터가 데이터베이스에 삽입될 때 문자열을 반환합니다.
CS.execute("""INSERT INTO TABLE_NAME VALUES (1, 'Harry')""")
CS.execute("""INSERT INTO TABLE_NAME VALUES (2, 'Arthor')""")
mysql.connection.commit()
return "Executed successfully"
계속해서 서버를 실행하고 브라우저에서 문자열이 반환되는지 확인합니다. 인터넷 연결이 연결되어 있는지 확인하십시오.
데이터가 데이터베이스에 삽입되었는지 확인해야 합니다. 이제 테이블을 선택하는 쿼리를 만듭니다.
여러 행을 검색할 것이기 때문에 fetchall()
을 사용할 수 있습니다. 모든 정보를 Executed_DATA
변수에 넣습니다.
이것을 콘솔에 인쇄하고 반환된 값을 표시합니다.
CS.execute("""SELECT * FROM TABLE_NAME""")
Executed_DATA = CS.fetchall()
print(Executed_DATA)
return str(Executed_DATA[1]["name"])
페이지를 저장하고 새로고침해 보겠습니다. 표시된 값을 볼 수 있고 여기 콘솔에서 아래를 보면 두 개의 항목이 있는 튜플을 볼 수 있습니다.
완전한 파이썬 코드:
from flask import Flask
from flask_mysqldb import MySQL
app = Flask(__name__)
app.config["MYSQL_USER"] = "user_name"
app.config["MYSQL_PASSWORD"] = "user_password"
app.config["MYSQL_HOST"] = "sql3.example.net"
app.config["MYSQL_DB"] = "Database_name"
app.config["MYSQL_CURSORCLASS"] = "DictCursor"
mysql = MySQL(app)
# mysql.init_app(app)
@app.route("/")
def CONNECT_DB():
CS = mysql.connection.cursor()
# CS.execute('''CREATE TABLE TABLE_NAME (id INTEGER, name VARCHAR(20))''')
# CS.execute('''INSERT INTO TABLE_NAME VALUES (1, 'Harry')''')
# CS.execute('''INSERT INTO TABLE_NAME VALUES (2, 'Arthor')''')
# mysql.connection.commit()
# return 'Executed successfully'
CS.execute("""SELECT * FROM TABLE_NAME""")
Executed_DATA = CS.fetchall()
print(Executed_DATA)
return str(Executed_DATA[1]["name"])
if __name__ == "__main__":
app.run(debug=True)
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn