플라스크에서 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로 쉬우세요.
다음 명령으로 db 만들기
CREATE TABLE MyUsers ( firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL);
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
'programing' 카테고리의 다른 글
jquery $(window).높이 ()이(가) 문서 높이를 반환합니다. (0) | 2023.11.07 |
---|---|
현재 GMT 시간에 대한 MySQL 쿼리 (0) | 2023.11.07 |
TabHost Activity에서 결과(ActivityForResult 시작)를 반환하는 방법은 무엇입니까? (0) | 2023.11.07 |
utf-8의 utf-8에서 php로 오라클의 데이터 (0) | 2023.11.02 |
오라클 - dblink 위에 커밋? (0) | 2023.11.02 |