最近逐渐打算将工作的环境转移到ubuntu下,突然发现对于我来说,这ubuntu对于我这种上上网,收收邮件,写写博客,写写程序的时实在是太合适了,除了刚接触的时候会不怎么完全适应命令行及各种权限管理,apt-get命令相当的方便,各种原先在windows下各种奇怪错误在ubuntu下都没有出现了,好了,我就不说废话了,今天大致简单的介绍下python下的ORM  to Mysql 的操作(注意:一定要看官网的文档!)

refer:http://docs.sqlalchemy.org/en/latest/orm/tutorial.html

一,准备环境

1.安装mysql-server (在此之前请准备好Python的环境)

2.安装mysql-python 这里有点坑,我直接使用apt-get命令没有成功,后来使用pip安装成功的

~$ pip install mysql-python

3.安装sqlalchemy

准备环境OK之后,安装sqlalchemy

~$ pip install sqlalchemy

  

如果你在第二步 pip install mysql-python 如图的类似的问题,这是需要安装connector for c 一些环境,如果你是x64的环境,请选中里面的x86,x64,都要安装

下载列表:http://dev.mysql.com/downloads/connector/c/6.0.html#downloads

参考的解决方案:http://stackoverflow.com/questions/1972259/cannot-open-include-file-config-win-h-no-such-file-or-directory-while-inst

环境都准备OK之后,我们来大致看一下如何使用sqlalchemy 的ORM

二,实际操作

1 创建engine对象

  这里,engine类似我们的连接字符串,它指示了你会连接到哪种类型的数据库,用户名,密码,地址等,这里,我示例的是mysql数据库,

# -*- coding: UTF-8 -*-from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmakerengine = create_engine('mysql://root:password@127.0.0.1:3306/test?charset=utf8',echo=True)

关于其它类型的数据库的连接字符串的写法,参考:

http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#sqlalchemy.create_engine

2.定义映射关系

#declare a Mapping,this is the class describe map to table column
Base = declarative_base()

3.定义连接管理器

#connect session to active the action
Session = sessionmaker(bind=engine)
session = Session()

4.表结构与类结构映射

class Person(Base):__tablename__ = 'Person'Id = Column(Integer, primary_key=True,autoincrement=True)Pname = Column(String,nullable=False,default='')Address = Column(String,nullable=False,default='')Age = Column(Integer,nullable=False,default=0)def __repr__(self):return 'the info is ID %s Pname is %s Address is %s and Age is %s' % \(self.Id, self.Pname, self.Address,  self.Age)

根据以上的代码,就可以完整的操作Mysql了,完整的代码如下:

# -*- coding: UTF-8 -*-__author__ = 'Bruce'
from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base#declare the connecting to the server
engine = create_engine('mysql://account:password@127.0.0.1:3306/test?charset=utf8',echo=False)#declare a Mapping,this is the class describe map to table column
Base = declarative_base()#connect session to active the action
Session = sessionmaker(bind=engine)
session = Session()class Person(Base):__tablename__ = 'Person'Id = Column(Integer, primary_key=True,autoincrement=True)Pname = Column(String,nullable=False,default='')Address = Column(String,nullable=False,default='')Age = Column(Integer,nullable=False,default=0)def __repr__(self):return 'the info is ID %s Pname is %s Address is %s and Age is %s' % \(self.Id, self.Pname, self.Address,  self.Age)if __name__ == '__main__':#add onep = Person(Pname='bruce', Address='beijing', Age=22)session.add(p)session.commit()#query onep_1 = session.query(Person).filter_by(Pname='bruce').first()print p_1#delete onep_2 = session.query(Person).filter_by(Pname='bruce').first()if p_2:session.delete(p_2)session.commit()#edit onep_3 = session.query(Person).filter_by(Pname='bruce').first()if p_3:p_3.Age = 55session.commit()

转载于:https://www.cnblogs.com/codefish/p/4875204.html

python下的orm基本操作(1)--Mysql下的CRUD简单操作(含源码DEMO)相关推荐

  1. (Java/JDBC)对MySQL数据库实现基础的增删改查操作(含源码)

    文章目录 前言 注(常用PreparedStatement方法) 源码展示 前言 实现数据库连接 → Java连接MySQL数据库(含源码) (实现简单的增删查改更改正确的SQL语句即可) 增:ins ...

  2. Python使用pandas对CSV进行操作(11种基础操作含源码)

    源数据如下:含脏数据(price列) 下列源码用到如下四个包: import pandas as pd import glob import os import csv 目录 1.基础文件读写(等同于 ...

  3. 简单网页版的注册登录案例(JSP+CSS+MySQL+Servlet+MVC设计思想,含源码!)

    文章目录 一.登陆注册小案例 1.数据库创建与连接测试 2.用户登录注册逻辑实现及测试 3.界面实现 4.程序MVC设计思想 一.登陆注册小案例 1.数据库创建与连接测试 创建数据库weblogin, ...

  4. 基于PHP+MYSQL的成绩查询系统(含源码)

    获取项目源文件,联系Q:1415736481,可指导毕设,课设 成绩查询系统文档 我们做的是成绩查询系统,有教师管理系统和学生查系统. 在教师管理系统中的功能如下: 插入学生成绩. 查询学生成绩. 修 ...

  5. 成绩查询源码mysql_基于PHP+MYSQL的成绩查询系统(含源码)

    获取项目源文件,联系Q:1415736481,可指导毕设,课设 成绩查询系统文档 我们做的是成绩查询系统,有教师管理系统和学生查系统. 在教师管理系统中的功能如下: 插入学生成绩. 查询学生成绩. 修 ...

  6. Python 机器学习之分析和预测自杀倾向的人员(教程含源码)

    前言 自杀是影响个人.家庭和社区的重大公共卫生问题.在本项目中,我们将探讨1985 年至2021 年自杀率的趋势和模式.我将使用从141 个收集的44,000 个数据点的样本不同国家.通过我们的分析, ...

  7. 老男孩GO语言线下培训班1期整套教程(完整18天含源码)

    老男孩GO语言线下培训班1期整套教程(完整18天含源码) 老男孩教育-Go语言第一期(共18天 含课程源码) 课程详细目录: ├─L001-Go语言-mp4 │      01 Go开发1期 day1 ...

  8. commons-math3-3.6.1-org.apache.commons.math3.analysis.function-包下的类(三)-中英对照文档及源码赏析

    commons-math3-3.6.1-org.apache.commons.math3.analysis.function-包下的类(三)-中英对照文档及源码赏析 摘要:中英对照文档.源码赏析.or ...

  9. commons-math3-3.6.1-org.apache.commons.math3.analysis.function-包下的类(二)-中英对照文档及源码赏析

    commons-math3-3.6.1-org.apache.commons.math3.analysis.function-包下的类(二)-中英对照文档及源码赏析 摘要:中英对照文档.源码赏析.or ...

最新文章

  1. 浅谈ASP.net中的DataSet对象
  2. 何时使用构造函数,构造函数使用new关键字
  3. 【分享】怎样学习一门新技术?
  4. @Cacheable原理
  5. 解决配置Ubuntu中vnc远程显示灰屏
  6. BZOJ 2440 完全平方数(莫比乌斯-容斥原理)
  7. 工作405-关于vue组件开发过程中一直报错:This relative module was not found:
  8. 理解AES加密解密的使用方法
  9. windows 映射文件会释放内存吗_Windows系统共享内存管理
  10. Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门
  11. Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十七】
  12. keil教程——串口调试
  13. jsp和jspx的区别
  14. [CTF]学习资源推荐
  15. 转载:破解DR.COM实现共享上网方法大搜罗(抱歉,直接转载
  16. 【生活】深圳驾考经历
  17. 2021高考成绩查询数学和物理,2021高考成绩什么时候几点可以查
  18. Python爬取中国银行外汇牌价(爬虫 + PyFlux简单预测分析)--(一)
  19. JavaWeb - 小米商城:用户注册
  20. 人对光波的三种特性_光线的三种特性——玩转光线的基础知识

热门文章

  1. How Tomcat Works(十一)
  2. shell中的for循环语句
  3. 1022.在线视频—IT售前营销讲座(三)售前情报、策划和资源协调
  4. scala(3):class和object,trait的区别
  5. 530 5.7.1 Client was not authenticated
  6. 【转载】C#扫盲之:==/Equals /ReferenceEquals 异同的总结,相等性你真的知道吗?
  7. ATT、IBM等公司结成新的物联网网络安全联盟
  8. 杭电2028--Lowest Common Multiple Plus
  9. 演示:GLBP跟踪功能、权值、与不同的负载均衡方式
  10. 无法解决 equal to 操作中 SQL_Latin1_General_CP1_CI_AS 和 Chinese_PRC_CI_AS 之间的排序规则冲突。...