一行python代码画粑粑_FlaskSQLAlchemy数据库

pigg⼀⾏python代码画粑粑_FlaskSQLAlchemy数据
看着⼀双美丽的眼睛流动着对那个时代的向往,不由得让⼈也期待啊。
创建数据库⽅式Database First # 使⽤navicat图形化管理⼯具⼀步⼀步创建
Moedl First # 使⽤navicat的画图⼯具画出结构,然后⾃动⽣成
Code First # ⽤Python写好数据库的模型,不⽤专门写SQL语句,主要解决创建数据的问题,专注于业务模型的设计。
模型创建与映射
模型概念
关于MVC⽅式,个⼈这么理解:
M --> model模块,主要的核⼼函数处理模块,负责处理⼤部分的业务的业务模型
V --> view模块,视图模块,负责展现出好看的界⾯
c --> ctrol模块,操作控制模块,负责处理控制部分
ORM:对象关系映射,包括数据创建过程,数据查询过程,删除,更新的过程。ORM操作数据库模型
来间接的操作数据库。
后期的所有数据库操作都是通过ORM来操作的。
创建妹⼦图项⽬模型
⾸先在数据库中创建好数据库,数据库名字为meizi,字符集为utf8mb4 – UTF-8 Unicode,排序规则为utf8mb4_general_ci
还是使⽤之前的妹⼦图的⼩项⽬,先创建⽬录data,然后新建creata_database.py,准备创建数据库结构,需要的数据结构⼤致如下
class data():
id = None
# id号
title = ''
# 页⾯标题
url = ''
# 该页⾯的主⽹址
show_img = ''
# 页⾯的单张展⽰图⽚
all_img = ''
# 页⾯的所有图⽚
def sample(self):
pass
然后使⽤sqlalchemy把结构直接映射到数据库,⾮常⽅便。这⾥提起⼀下,sqlalchemy不是flask⾃带的,但是falsk对sqlalchemy做了部分的优化,使⽤pipenv install flask-sqlalchemy即可安装。
ok,下⾯的新建的数据库模型
# @File : creata_database.py
# @Software: PyCharm
import sys
from sqlalchemy import Column,Integer,String
# 导⼊column(字段),Integer(数字类型)
reload(sys)
sys.setdefaultencoding('utf-8')
class data():
id = Column(Integer,primary_key=True,autoincrement=True)
# 设置id号为数据库的主键,并且⾃增长
# 相当于SQL:id int primary key auto_increment
title = Column(String(100),nullable=True,default='获取该妹⼦信息失败')
# 页⾯标题长度为100,并且允许为空,如果为空的话就⽣成上⾯的default
url = Column(String(100),nullable=False,unique=True)
二次包络# 该页⾯的主⽹址长度100,不允许为空,不允许重复
阻燃屏蔽控制电缆show_img = Column(String(100),nullable=False)
# 页⾯的单张展⽰图⽚
all_img = Column(String(100),nullable=False)
# 页⾯的所有图⽚
def sample(self):
pass
妹⼦图项⽬映射到数据库
然后实例化sql的对象,新增代码:
from flask_sqlalchemy import SQLAlchemy
# 实例化sqlalchemy对象,在flask中导⼊进来
db = SQLAlchemy()
# db就是sqlalchemy的初始化的核⼼对象
class data(db.Model):
id= xxx重复上⾯的代码
把之前的类继承db即可。然后回到主⽬录下的init.py⽂件下,该⽂件之前是把蓝图注册到app⾥⾯的,之前的init.py代码如下
# @File : __init__.py.py
# @Software: PyCharm
import sys
from flask import Flask
from app.ata_database import db
曼越橘reload(sys)
sys.setdefaultencoding('utf-8')
def create_app():
app = Flask(__name__,template_folder=('web/templates'))
start_Blueprint(app)
return app
def start_Blueprint(app):
from app.web.Mmzi import web
导⼊data⽬录下create_database.py中的db对象,然后注册到app当中并且初始化对象,并且调⽤他。# -*- coding: utf-8 -*-
# @Time : 2018/7/19 0019 18:36
# @Author : Langzi
# @Blog : www.langzi.fun
# @File : __init__.py.py
# @Software: PyCharm
import sys
from flask import Flask
#from app.ata_database import db
reload(sys)
sys.setdefaultencoding('utf-8')
def create_app():
app = Flask(__name__,template_folder=('web/templates'))
db.init_app(app)
with app.app_context():
return app
def start_Blueprint(app):
from app.web import web
app就像⼀个插板⼀样,蓝图可以注册到app⾥⾯,路由注册到app⾥⾯,甚⾄数据库也可以注册到app⾥⾯,后期的登录等模块⼀样注册到⾥⾯,当前已经差不多配置完成了,还有重要的⼀点没说,那就是链接到哪个数据库⾥⾯。
在主⽬录下的config.py中可以添加数据库的配置信息,之前config之定义了DEBUG的开关,这个时候可以加⼊数据库配置。
SQLAlchemy本⾝⽆法操作数据库,其必须以来pymsql,cymysql,mysqldb等第三⽅插件,根据配置⽂件的不同调⽤不同的数据库API,从⽽实现对数据库的操作,下⾯使⽤过cymysql进⾏操作
app主⽬录下的config.py配置⽂件
# -*- coding: utf-8 -*-
# @Time : 2018/7/17 0017 20:42
# @Author : Langzi
# @Blog : www.langzi.fun
# @File : config.py
# @Software: PyCharm
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'mysql+cymysql://root:root@127.0.0.1:3306/meizi'
# SQLALCHEMY_DATABASE_URI是flask定义好的配置项,就像DEBUG⼀样
# mysql + cymysql : 使⽤mysql数据库,驱动使⽤cymysql(需要pipenv install cymysql),你还可以使⽤pymysql
# 然后数据库账号密码,主机和端⼝以及数据库名字
最后允许主程序的时候,会发现数据库中多了⼀个名为meizi的数据库,其中多了⼀张名为data的表,数据库的结构和定义的结构⼀致。
不同连接数据库插件使⽤⽅法MySQL-Python
mysql+mysqldb://:@[:]/
pymysql
mysql+pymysql://:@/[?]
MySQL-Connector
mysql+mysqlconnector://:@[:]/
oracle+cx_oracle://user:pass@host:port/dbname[?key=value&]
⽅法⼀:使⽤Pymysql与SQLAlchemy操作数据库# coding=utf-8
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://5@115.159.193.77:3306/school?charset=utf8", max_overflow=5)
# 执⾏SQL
cur = ute(
"insert into user (name, password) values('lihy', 'lihy')"
个人信息系统>tmal)
# 新插⼊⾏⾃增ID
cur.lastrowid
# 执⾏SQL
cur = ute(
"insert into user(name, password) values(%s, %s)", [('liq', 'liq'), ('liuxj', 'liuxj235')]
)
# 执⾏SQL
cur = ute(
"insert into user(name, password) values(%(name)s, %(password)s)", name='lium', password='lium123'
)
# 执⾏SQL
cur = ute('select * from user')
# 获取第⼀⾏数据, 第n⾏,所有数据
cur.fetchone()
cur.fetchmany(3)
cur.fetchall()
⽅法⼆:使⽤SQLALchemy操作数据库
初始化对象# -*-coding:utf-8-*-
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import datetime
app = Flask(__name__)
# ⽤于连接数据的数据库

本文发布于:2024-09-23 01:30:47,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/197017.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据库   创建   模块   数据   模型   结构   对象
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议