Flask基础学习2

连接mysql数据库测试(专业版)

注意1:要导入text库,否则可能出现找不到select 1错误

注意2:若出现下列问题,可按照模板代码的顺序db = SQLAlchemy(app) 的位置

RuntimeError: Either 'SQLALCHEMY_DATABASE_URI' or 'SQLALCHEMY_BINDS' must be set.

复制代码
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text
app = Flask(__name__)

# MySQL所在主机名,默认127.0.0.1
HOSTNAME = "127.0.0.1"
PORT = 3306
USERNAME = "root"
PASSWORD = "****"
DATABASE = "***"
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"

db = SQLAlchemy(app)

with app.app_context():
    with db.engine.connect() as conn:
        result = conn.execute(text("select 1"))
        print(result.fetchone())  # (1,)

ORM的实现

复制代码
class User(db.Model):
    __tablename = 'admin'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    sname = db.Column(db.String(100),nullable=False)
    snumber = db.Column(db.String(100),nullable=False)
    address = db.Column(db.String(100),nullable=False)


with app.app_context():
    db.create_all()

命令行的实现及结果

mysql> show tables;

+---------------+

| Tables_in_flk |

+---------------+

| admin |

| user |

+---------------+

2 rows in set (0.00 sec)

mysql> desc admin;

+---------+--------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+---------+--------------+------+-----+---------+----------------+

| id | int | NO | PRI | NULL | auto_increment |

| sname | varchar(100) | NO | | NULL | |

| snumber | varchar(100) | NO | | NULL | |

| address | varchar(100) | NO | | NULL | |

+---------+--------------+------+-----+---------+----------------+

4 rows in set (0.00 sec)

ORM插入实现

复制代码
user = User(sname='pass', snumber=10, address='163@qq.com')
db.session.add(user)
db.session.commit()

mysql> select * from admin;
+----+-------+---------+------------+
| id | sname | snumber | address    |
+----+-------+---------+------------+
|  1 | pass  | 10      | 163@qq.com |
+----+-------+---------+------------+
1 row in set (0.00 sec)

ORM查询实现

复制代码
user  = User.query.get(1)
print(user.sname)
# 输出 pass

ORM筛选实现

复制代码
user  = User.query.filter_by(sname='pass')
print(user[0].address)
# 输出 163@qq.com

ORM更新实现

复制代码
user  = User.query.filter_by(sname='pass').first()
user.address = '666@qq.com'
db.session.commit()

ORM删除实现

复制代码
user  = User.query.get(1)
db.session.delete(user)
db.session.commit()

其他待更新中。。。

相关推荐
软件开发技术深度爱好者17 分钟前
中学生学习工具:多学科自学启导者(轻量版)实现
学习·ai·技术实践
Joe_Wang523 分钟前
【从0到1学习JVM · 13】点进JDK源码只有一个分号?搞懂本地方法栈与JNI机制
java·jvm·学习·本地方法栈
编码者卢布30 分钟前
【App Service 】WebJobs 多实例实验:谁在运行,什么时候运行?
开发语言·python
~光~~35 分钟前
【嵌入式Linux学习】GFP_NOIO / GFP_NOFS(Linux 内核 gfp 分配标志)
linux·运维·学习
坤坤子吖37 分钟前
ELF加载、动态链接、GOT与PLT
linux·笔记·学习
quantdash_cc38 分钟前
Python 获取实时行情后如何进行批量筛选?从全市场快照到策略候选池
开发语言·python·数据分析·量化交易·股票数据·quantdash
小蜗 strong1 小时前
和电脑猜拳(随机程序应用)
服务器·前端·python
华研前沿标杆游学2 小时前
企业标杆游学|走进东莞OPPO总部✨探秘智造与品牌出海
python
大侠归来2 小时前
C语言内存管理:从栈到堆的完整指南
c语言·开发语言·python
LOVE️YOU2 小时前
Python 数据结构的本质:位置、对象引用、Hash 与可变性
数据结构·python·哈希算法