flaskベースのリアルタイム更新データベースプロジェクト
19942 ワード
引用する
メンタープロジェクトを行う過程で、リアルタイムシミュレーション実験を完了するためにリアルタイムで更新されたデータベースが必要です.しかし、工場側のデータベースは急に使いにくくなり、使いやすくても本人が関わっている工業プロジェクトは夜中に着工するのが普通で、使いやすくても夜明けに実験室でプロジェクトをすることはできません.の怒ったら、自分でリアルタイムで更新したデータベースをシミュレートしましょう.
前期の仕事
私は最近ずっとflaskでプロジェクトをしていて、ちょうどSQLAlchemyでデータベースを操作することを学んで、それではちょうど熱いうちに鉄を打って、直接flaskを持って一定の時間ごとにデータベースにデータを挿入するプロジェクトをしましょう.プロジェクト環境:Pycharm+Python 3.5+flask v 1.0.2+mariadb(mysqlでもOK)+Navicat(データベースの可視化、データベースの操作が容易)+csv形式のデータファイル ここでcsvファイルは6列あり、左から右にcurrent_A,current_B,current_C,action_A,action_B,action_C,共3601行(工業データは秘密にしているため、外に漏らすことができない)、csvファイルの役割は中のデータを1本1本データベースに挿入し、実際の工業のリアルタイム生産過程をシミュレートすることである.Navicatでreal_という名前のdatabaseを新規作成time_db、私のデータベースのユーザー名はrootで、パスワードは123456で、ローカルipは127.0.0.1で、そこで、データベースを構成する文は:
pymysqlサードパーティライブラリをインポートする必要があることに注意してください.Navicatにテーブル構造をインポートします.テーブル名はfur_です.data:
データを挿入するには、次の文を使用します.
完全なコード
すべてのコードは次のとおりです.
実行中、下のインタラクティブコマンドラインに「挿入成功!」と表示されると、説明プログラムが正常に動作しているので、データベースを開いて、リアルタイムで更新されたデータベースかどうかをリフレッシュします.
最後に
サードパーティ製ライブラリのインポート中に、
この文は2つのパッケージをインポートする必要があります:Flask-SQLAlchemyとSQLAlchemy、1つだけインポートするとプログラミング中にエラーメッセージはありませんが、実行時に悲劇になります.また、エラーを報告したら、データベースの構成が変更されていないか、ポートが占有されているか、pythonエディタが変更されているかどうかなどの問題を見てみましょう.タイムスタンプの問題については、私の別のブログを参照してください.https://blog.csdn.net/xiecheng1995/article/details/90900496
本人オリジナル.転載は出典を明記してください.ありがとうございます.
メンタープロジェクトを行う過程で、リアルタイムシミュレーション実験を完了するためにリアルタイムで更新されたデータベースが必要です.しかし、工場側のデータベースは急に使いにくくなり、使いやすくても本人が関わっている工業プロジェクトは夜中に着工するのが普通で、使いやすくても夜明けに実験室でプロジェクトをすることはできません.の怒ったら、自分でリアルタイムで更新したデータベースをシミュレートしましょう.
前期の仕事
私は最近ずっとflaskでプロジェクトをしていて、ちょうどSQLAlchemyでデータベースを操作することを学んで、それではちょうど熱いうちに鉄を打って、直接flaskを持って一定の時間ごとにデータベースにデータを挿入するプロジェクトをしましょう.
#
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:[email protected]/real_time_db'
# , False
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
pymysqlサードパーティライブラリをインポートする必要があることに注意してください.
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for fur_data
-- ----------------------------
DROP TABLE IF EXISTS `fur_data`;
CREATE TABLE `fur_data` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`current_A` float DEFAULT NULL,
`current_B` float DEFAULT NULL,
`current_C` float DEFAULT NULL,
`action_A` float DEFAULT NULL,
`action_B` float DEFAULT NULL,
`action_C` float DEFAULT NULL,
`d_time` datetime DEFAULT NULL COMMENT ' ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2906 DEFAULT CHARSET=latin1;
データを挿入するには、次の文を使用します.
--
INSERT INTO `fur_data` VALUES ('1', '20000.0', '20000.0', '20000.0', '0.0', '0.0', '0.0', '2019-6-16 00:00:00');
完全なコード
すべてのコードは次のとおりです.
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import time
import csv
import pymysql
pymysql.install_as_MySQLdb()
app = Flask(__name__)
#
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:[email protected]/real_time_db'
# , False
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
#
class Fur(db.Model):
__tablename__ = 'fur_data'#
id = db.Column(db.Integer, primary_key=True)
current_A = db.Column(db.Float, nullable=False)
current_B = db.Column(db.Float, nullable=False)
current_C = db.Column(db.Float, nullable=False)
action_A = db.Column(db.Float, nullable=False)
action_B = db.Column(db.Float, nullable=False)
action_C = db.Column(db.Float, nullable=False)
d_time = db.Column(db.DateTime, nullable=False)
# ,
#
db.drop_all()
#
db.create_all()
reader = csv.reader(open('FMF_data.csv'))
# A,B,C list
current_A_list = []
current_B_list = []
current_C_list = []
action_A_list = []
action_B_list = []
action_C_list = []
for list in reader:
current_A_list.append(list[0])
current_B_list.append(list[1])
current_C_list.append(list[2])
action_A_list.append(list[3])
action_B_list.append(list[4])
action_C_list.append(list[5])
len = len(current_A_list)
i = 0
#
while True:
time.sleep(1)
current_A = current_A_list[i]
current_B = current_B_list[i]
current_C = current_C_list[i]
action_A = action_A_list[i]
action_B = action_B_list[i]
action_C = action_C_list[i]
d_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
fur = Fur(current_A=current_A, current_B=current_B, current_C=current_C, action_A=action_A, action_B=action_B, action_C=action_C, d_time=d_time)
db.session.add(fur)
db.session.commit()
print(" !")
i += 1
if i == 3600: #
i = 0
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
実行中、下のインタラクティブコマンドラインに「挿入成功!」と表示されると、説明プログラムが正常に動作しているので、データベースを開いて、リアルタイムで更新されたデータベースかどうかをリフレッシュします.
最後に
サードパーティ製ライブラリのインポート中に、
from flask_sqlalchemy import SQLAlchemy
この文は2つのパッケージをインポートする必要があります:Flask-SQLAlchemyとSQLAlchemy、1つだけインポートするとプログラミング中にエラーメッセージはありませんが、実行時に悲劇になります.また、エラーを報告したら、データベースの構成が変更されていないか、ポートが占有されているか、pythonエディタが変更されているかどうかなどの問題を見てみましょう.タイムスタンプの問題については、私の別のブログを参照してください.https://blog.csdn.net/xiecheng1995/article/details/90900496
本人オリジナル.転載は出典を明記してください.ありがとうございます.