weixin_52331560 2022-07-04 14:28 采纳率: 83.3%
浏览 62
已结题

flask-sqlalchemy无法操作数据库

1、问题遇到的现象和发生背景
python3
使用flask_sqlalchemy连接mysql。执行db.create_all()后,数据库没有创建表。程序运行之后也没有报错,怀疑是根本没有连接到数据库


我的代码
from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

#数据库配置变量
HOSTNAME = '192.168.126.108'
PORT     = '3306'
DATABASE = 'material'
USERNAME = 'flask'
PASSWORD = '12345678.Com'
DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
app.config['DWLALCHEMY_DATABASE_URI'] = DB_URI
#关闭数据库的跟踪
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
#开启输出sql语句
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)

#定义ORM模型
class Article(db.Model):
    __tablename__ = "article"
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    title = db.Column(db.String(200),nullable=False)
    content = db.Column(db.Text,nullable=False)

db.create_all()

@app.route("/trick")
def trick_view():
    article = Article(title="123", content="xxx")
    db.session.add(article)
    db.session.commit()
    return "操作"

@app.route('/')
def index():
    engine = db.get_engine()
    with engine.connect() as conn:
        result = conn.execute("select 1")
        print(result.fetchone())
    return 'Helle world!'

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

2、 运行结果
2022-07-04 14:16:51,098 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2022-07-04 14:16:51,099 INFO sqlalchemy.engine.Engine PRAGMA main.table_info("article")
2022-07-04 14:16:51,099 INFO sqlalchemy.engine.Engine [raw sql] ()
2022-07-04 14:16:51,102 INFO sqlalchemy.engine.Engine PRAGMA temp.table_info("article")
2022-07-04 14:16:51,102 INFO sqlalchemy.engine.Engine [raw sql] ()
2022-07-04 14:16:51,104 INFO sqlalchemy.engine.Engine
CREATE TABLE article (
id INTEGER NOT NULL,
title VARCHAR(200) NOT NULL,
content TEXT NOT NULL,
PRIMARY KEY (id)
)

2022-07-04 14:16:51,104 INFO sqlalchemy.engine.Engine [no key 0.00026s] ()
2022-07-04 14:16:51,105 INFO sqlalchemy.engine.Engine COMMIT

  • Serving Flask app 'app' (lazy loading)
  • Environment: production
    WARNING: This is a development server. Do not use it in a production deployment.
    Use a production WSGI server instead.
  • Debug mode: on
  • Running on http://127.0.0.1:5000 (Press CTRL+C to quit)
  • Restarting with stat

3、 我的解答思路和尝试过的方法
曾经怀疑是库的问题,我安装了flask,flask-sqlalchemy,sqlalchemy和pymysql

  • 写回答

1条回答 默认 最新

  • 溪风沐雪 2022-07-04 14:56
    关注

    拼写错误吧,我简单改了一下就可以了:

    你的:    app.config['DWLALCHEMY_DATABASE_URI'] = DB_URI
    修改后:app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月12日
  • 已采纳回答 7月4日
  • 创建了问题 7月4日

悬赏问题

  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: