MySQL flask-sqlalchemy学习1

  flask-sqlalchemy捣鼓了蛮久写点心得,框架安装就不说了

1.先按文档设置一个配置文件,比如config.py

按框架要求填上代码:

#开启flask服务器监测
debug = True

#配置flask_sqlalchemy环境
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
#dialect+driver://username:password@host:port/database
app.config['SQLALCHEMY_DATABASE_URI'] ='mysql://root:123456@127.0.0.1:3306/flask1'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)# 定义User对象(模板继承db.Model):class User(db.Model):
#命名表
    __tablename__ = 'article'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(100), nullable=False)
    content = db.Column(db.TEXT, nullable=False)

这之中dialect+driver://username:password@host:port/database
的driver貌似是可以不填。username和password是数据库的用户名和密码,dialect是数据库名

2.然后是文件调用config.py
#encoding utf-8
from flask import Flask
from config import User,db

app = Flask(__name__)

# 创建新User对象:
new_user = User(title='Bob',content = 'abc')
# 添加到session:
db.session.add(new_user)
# 提交执行,保存到数据库:
db.session.commit()

# 创建Query查询,filter是where条件,最后调用one()返回唯一行或者first(),如果调用all()则返回所有行:
user = User.query.filter(User.id=='30').one()
# 打印类型和对象的属性:
print('type:',type(user) )
print('title:',user.title)
print('content:',user.content)
在这之中我尝试过调用all(),然后提示
AttributeError: 'list' object has no attribute 'title' 然后搜索发现all()的用法:
user = User.query.all()

查询还有一个方法是filter_by:
user = User.query.filter_by(id ='30').one()
3.删除是使用
db.session.delete(user)
,但是需要的是将所查询到的内容删除,将查询到的内容赋值给变量user然后删除
	实际上在使用时候为了确认是否将数据添加进了MySQL中,打开MySQL控制台查看
     mysql> show database; 查看数据库中的database列表,
     mysql> use flask1;进入database flask1中,
     mysql> select*from article;查看article表单数据详情。

目前基本功能已经实现,出现的问题是存在告警:  c:\...\sqlalchemy\engine\default.py:470: Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 480")  cursor.execute(statement, parameters),原因尚不明确在文件中已经将编码类型设置成utf8,数据库查看如图1:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值