前言

本文讲解在Python语言中使用SQLAlchemy库操纵MySQL数据库的方法。

由于具体内容涉及较多,本文仅以插入及展示数据为例,更多内容请查阅有关文档。

ORM

ORM也即对象 - 关系映射。

在前文中,操纵的对象针对数据库中的关系表。而ORM机制能让你的处理对象由这些表转换成Python中的表对象。

这样的机制意义不小,它能让你在不了解SQL语句的条件下使用数据库。

准备工作

1. 安装Python和MySQL;
2. 安装SQLAlchemy。("easy_install sqlalchemy"即可)。

总体步骤

1. 创建一个数据库;
2. 导入SQLAlchemy库相关内容 (详见下面代码展示部分);
3. 定义表对象结构;
4. 建立数据库连接引擎;
5. 基于 4 中创建的引擎创建一个会话类型;
6. 定义会话对象;
7. 定义并初始化表对象;
8. 插入表对象;
9. 关闭会话。

代码示例

 # -*- coding: utf-8 -*-
# ================================================
# 作者: 方萌
# 创建时间: 20**/**/**
# 版本号: 1.0
# 联系方式: 1505033833@qq.com
# ================================================
# sqlalchemy 相关模块
from sqlalchemy import Column, String, INT, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# 表对象的基类:
Base = declarative_base()
# 定义User表对象
class User(Base):
# 表名:
__tablename__ = 'testTable'
# 表的结构:
name = Column(String(20), primary_key=True)
age = Column(INT)
# 建立数据库连接引擎
engine = create_engine('mysql+mysqlconnector://root:123456@localhost:3306/testDB')
# 创建DBSession类型
DBSession = sessionmaker(bind=engine)
# 创建session对象
session = DBSession()
# 创建新User对象
new_user = User(name='方萌ORM', age='')
# 添加到session
session.add(new_user)
# 提交即保存到数据库
session.commit()
# 关闭session
session.close()

运行结果

小结

基于ORM机制的库还有很多,可根据实际需要进行选择。

本文旨在讲述ORM的思想以及展示基本使用套路。更多高级的用法(如创建表,创建外键关系等)请查阅相关文档。

第二篇:操纵MySQL数据库(2) - 基于ORM思想的SQLAlchemy库的更多相关文章

  1. 第一篇:操纵MySQL数据库(1) - 基于MySQLdb库

    前言 本文讲解在Python语言中使用MySQLdb库操纵MySQL数据库的方法. 准备工作 1. 安装Python和MySQL2. 安装MySQLdb (exe下载地址:http://sourcef ...

  2. python-列表、字典、元组的员工信息处理接口(第二篇(五):基于列表、字典和元组的员工信息处理接口)

    Python之旅]第二篇(五):基于列表.字典和元组的员工信息处理接口 python 列表 字典 元组 员工信息处理接口 摘要: 1.基本需求     编写一个查询员工信息表的程序,实现如下功能: ( ...

  3. 【第二章】MySQL数据库基于Centos7.3-部署

    一.MySQL数据库的官方网址: https://www.mysql.com/ https://www.oracle.com/ http://dev.mysql.com/doc/refman/5.7/ ...

  4. pdo操纵mysql数据库

    PDO是mysql数据库操作的一个公用类了,我们不需要进行自定类就可以直接使用pdo来操作数据库了,但是在php默认配置中pdo是未开启所以我们必须先在php.ini中开启它才可以使用,下文我会讲到. ...

  5. [异常篇]001.MySQL数据库忘记root密码解决办法[转载]

    MySQL数据库忘记root密码解决办法 1.在运行输入services.msc打开服务窗体,找到MYSQL服务.右键停止将其关闭.如图: 2.在运行输入cmd打开终端. 3.找到MYSQL的安装目录 ...

  6. 在.net core web 项目中操作MySql数据库(非ORM框架,原生sql语句方式)

    本案例通过MySql.Data和Dapper包执行原生sql,实现对数据库的操作. 操作步骤: 第1步:在MySql数据库中新建表User(使用Navicat For MySql工具) 建表语句: c ...

  7. 从Excel中读取数据并批量写入MySQL数据库(基于MySQLdb)

    一.Excel内容如下,现在需要将Excel中的数据全部写入的MySQL数据库中: 二.连接MySQL的第三方库使用的是“MySQLdb”,代码如下: # -*- coding:utf-8 -*-im ...

  8. 42.通过原生SQL语句进行操纵mysql数据库

    views.py文件中: from django.shortcuts import render # 导入connection模块 from django.db import connection d ...

  9. python对Mysql操作和使用ORM框架(SQLAlchemy)

    python对mysql的操作 Mysql 常见操作 数据库操作 创建数据库 create database fuzjtest 删除数据库 drop database fuzjtest 查询数据库 s ...

随机推荐

  1. python matplotlib 播放图片变化过程

    最近想将原图片和处理后的图片放在一起观察图片的变化过程.但是网上并么有找到有用的示例代码,所以粘出来和大家分享一下. import numpy as np import matplotlib.pypl ...

  2. PHP码农在Golang压力下的生存之道-PHP性能优化实践

    随着国内Golang的火爆,phper的生存压力越来越大,在一次内部技术讨论中,gopher甚至提出,要什么php,写php的全部开掉,唉,码农何苦为难码农. 本文试图寻找一种有效实践,减少php w ...

  3. Mybatis查询,resultMap="Map" 查询数据有空值,导致整个map为空的问题

    解决方法,不要使用Map接收,使用HashMap或者LinkHashMap,都可以. resultMap="Map" 替换为: resultMap="HashMap&qu ...

  4. css实现多行多列的布局

    1.两列多行: HTML: <div class="box1"> box1:实现两列多行布局 <ul> <li>111</li> & ...

  5. hihoCoder 树结构判定(并查集)

    思路:树满足两个条件: 1.顶点数等于边数加一 2.所有的顶点在一个联通块 那么直接dfs或者并查集就可以了. AC代码 #include <stdio.h> #include<st ...

  6. hihoCoder 1036 Trie图 AC自动机

    题意:给定n个模式串和一个文本串,判断文本中是否存在模式串. 思路:套模板即可. AC代码 #include <cstdio> #include <cmath> #includ ...

  7. Python基础学习参考(七):字典和集合

    一.字典 字典跟列表一样是一组数据的集合.它的特点是什么呢? 特点一:字典具有键(key)和值(value),其中键必须是唯一的,不可重复的,即键必须可以哈希的.对于值没有要求. 特点二:字典是无序的 ...

  8. C++ string数据类型的实现

    #include <cstdlib> #include <cstring> class Mystring { public: Mystring(const char * pda ...

  9. PCI9054 学习小结

    PCI的基本协议这里就不介绍了,因为一般的芯片协议都是集成好的,我只需要大体了解就行,不需要做芯片,我感觉就不需要太了解协议. 这里讲解是基于PLX 的9054(9052)芯片为基础的,本人只是入门, ...

  10. ip2long的用法

    ip2long:将IPv4的ip地址(以小数点分隔形式)转换为int Description int ip2long ( string ip_address ) 如果ip地址非法,返回FALSE(PH ...