1.先导入相对应的库

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
pymysql.install_as_MySQLdb() app = Flask(__name__)
# 连接数据库
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:zengsf@localhost:3306/flask"
# 采用自动提交方式
app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"] = True
db = SQLAlchemy(app)

2.先创建两个数据库类,例如创建LOL与DATA2这两个类

LOL与DOTA2表进行外键关联,DOTA2都有一个lol_id字段。

class LOL(db.Model):
# 创建表名为
__tablename__ = "lol"
# 创建字段
id = db.Column(db.Integer, primary_key=True)
lname = db.Column(db.String(30), nullable=False)
# 增加关联属性以及反向引用属性
data = db.relationship("DOTA2", backref = "lol", uselist=False) def __init__(self, lname):
self.lname = lname def __repr__(self):
return "<LOL:%r>" % self.lname
class DOTA2(db.Model):
__tablename__ = "dota2"
id = db.Column(db.Integer, primary_key=True)
dname = db.Column(db.String(30))
# 增加一个列(外键):表示引用自LOL表的外键
lol_id = db.Column(db.Integer, db.ForeignKey("lol.id")) def __init__(self, dname):
self.dname = dname def __repr__(self):
return "<DOTA2:%r>" % self.dname

3.上面这些还没有完成创建数据库,还需要有数据库的创建

db.create_all()

4.接着先往两张表里添加数据,在浏览器中运行指定的路径就可以添加数据。

@app.route('/lol')
def lol_view():
loldata = LOL("小炮")
db.session.add(loldata)
print(db.session.query(LOL).all())
return "OK" @app.route("/dota2")
def dota2_view():
dota2data = DOTA2("狙击手")
lol = db.session.query(LOL).filter(LOL.id==1).first()
dota2data.lol_id = lol.id
db.session.add(dota2data)
print(db.session.query(DOTA2).all())
return "OK"

5.数据添加成功之后,可以通过正向引用或者反向引用来获取到相对应的名字

@app.route('/query')
def query_view():
# 正向引用,通过LOL表进行查询,获取对象,在利用对象调用关联属性得到DOTA2表关联的对象,在获取里面的值。
# lol = LOL.query.filter_by(id=1).first()
# data = lol.data # 反向引用,通过DOTA2表进行查询,获取对象,在利用对象调用反向引用属性获取到LOL表关联对象,获取里面的值
dota2 = DOTA2.query.filter_by(id=1).first()
data = dota2.lol return "lol:%s,dota2:%s" % (data.lname, dota2.dname)

6.由于代码是从上一直往下写的,最后别忘了调用

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

7.在浏览器中输出结果是:

lol:小炮,dota2:狙击手

SQLAlchemy中表结构的一对一的更多相关文章

  1. SQLAlchemy中表结构的一对多

    from flask import Flask from flask_sqlalchemy import SQLAlchemy import pymysql pymysql.install_as_My ...

  2. 在线批量修改mysql中表结构

    在线批量修改mysql中表结构 1.获取要修改的表的表名称登录mysql库,查询出所有表 show tables; 将需要修改表结构的表名称存放到b.txt文件中2.执行修改修改表引擎为InnoDB ...

  3. 三十六:数据库之SQLAlchemy外建之一对一关系

    relationship()的uselist参数默认为True,即一对多,如果要一对一,则需让uselist=False 准备工作 from sqlalchemy import create_engi ...

  4. Oracle中表结构和表内容复制

    处理该问题注意以下几点: 1. 清空表中数据SQL:truncate table table_name; 2.复制表结构SQL:create table table_name1 as select * ...

  5. [转载]关于laravel中表关系的一对一、一对多、多对一、多对多实践

    这是转载的文章 出处:https://blog.csdn.net/weixin_38112233/article/details/79220535 作者:重新遇到 一.建表和插入测试数据 1.用户表建 ...

  6. 查询MySQL数据库中表结构的几种方法

    什么是表结构?表结构就是定义数据表文件名,确定数据表包含哪些字段,各字段的字段名.字段类型.及宽度,并将这些数据输入到计算机当中. 查询方法:以表‘employees’为例子 1.describe(d ...

  7. SQLAlchemy 增删改查 一对一 多对多

    首先要导入SQLAIchemy模块 from sqlalchemy.ect.declaative import declarative_base 创建orm基类 Base = declarative_ ...

  8. 查询MySQL数据库中表结构

    什么是表结构?表结构就是定义数据表文件名,确定数据表包含哪些字段,各字段的字段名.字段类型.及宽度,并将这些数据输入到计算机当中. 查询方法:以表‘employees’为例子 1.describe(d ...

  9. SqlServer 允许保存对数据库中表结构的修改

    1.Tools-->optisons-->Designers 如下截图

随机推荐

  1. linux查看主机最后启动时间

    1.使用who查看最后重启时间 who -b 2.使用last查看近几次重启时间 last reboot 第一条即为最后一次重启日期 last其实是查询用户的登录记录,reboot是一个伪用户:也就是 ...

  2. axios API速查表

    原来jq自带ajax方法,但是近期项目用vue,在vue项目中发送ajax请求原来用vue resource,现在更推荐使用axios,因为axios和vue更配! GET 请求 // Make a ...

  3. astah-professional-7_2_0安装

    astah-professional-7_2_0-1安装 1● 下载文件 2● 安装       replace   D:\Program\astahprofessional\inst\astah-p ...

  4. learning ddr tRP and tRP tRTP CL tRAS

    referce :https://blog.csdn.net/ghostyu/article/details/7728106 tRP(RAS Precharge Time): “内存行地址控制器预充电 ...

  5. bzoj1666

    题解: 简单模拟 按照题目意思来就可以了 代码: #include<bits/stdc++.h> using namespace std; int n,ans; int main() { ...

  6. day22-python操作mysql2

    数据库连接池 python编程中可以使用MySQLdb进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接mysql数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时, ...

  7. html页面标题增加图标方法

    有些网站的网页标题部分有图标,很带感.方法很简单: 在<head></head>部分增加下列一行代码即可. <link rel="shortcut icon&q ...

  8. MySQL远程登陆

    mysql:连接数据库 1.连接到本机上的MYSQL 命令:mysql -u [username] -p username:用户名 命令示例:mysql -u root -p,回车后提示你输密码. 2 ...

  9. Linux Shell 编程 教程 常用命令

    概述: Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户 ...

  10. Java:将数据库数据导出到Excel (一眼就看会)

    所用Jar包 1. sqljdbc4.jar 连接数据库的Jar包(根据数据库的不同进行选择,我用的SqlServer2008) 2.Jxl.jar 访问Excel的Jar包 注意:支持以.xls结尾 ...