python通过elixir包操作mysql数据库实例代码


Posted in Python onJanuary 31, 2018

本文研究的主要是python通过elixir包操作mysql数据库的相关实例,具体如下。

python操作数据库有很多方法,下面介绍elixir来操作数据库。elixir是对sqlalchemy lib的一个封装,classes和tables是一一对应的,能够一步定义classes,tables和mappers,支持定义多个primary key。

定义model.py

from elixir import sqlalchemy 
from elixir import * 
 
engine =sqlalchemy.create_engine('mysql://root:root@localhost/') #the first root is the user, and the sencond root is the password 
#engine.execute("DROP DATABASE IF EXISTS elixir") 
engine.execute("CREATE DATABASE IF NOT EXISTS elixir") 
 
 
metadata.bind='mysql://root:root@localhost:3306/elixir' 
#metadata.bind.echo =True 
class Movie(Entity): 
  using_options(tablename='movies') 
 
  title = Field(Unicode(30),primary_key = True) 
  year = Field(Integer, primary_key = True) 
  description = Field(UnicodeText) 
  director = ManyToOne('Director') 
  genres = ManyToMany('Genre') 
  actor = ManyToMany('Actor') 
 
  def __repr__(self): 
    return '<Move "%s" (%d)>' % (self.title, self.year) 
 
class Person(Entity): 
  using_options(inheritance='multi') 
  using_options(tablename='person') 
 
  name = Field(Unicode(60)) 
 
  def __repr__(self): 
    return '<Person "%s">' % self.name 
 
 
class Director(Person): 
  using_options(inheritance='multi') 
  using_options(tablename='director') 
 
  movies = OneToMany('Movie') 
 
  def __repr__(self): 
    return '<Director "%s">' % self.name 
 
class Genre(Person): 
  using_options(inheritance='multi') 
  using_options(tablename='genre') 
 
  movies = ManyToMany('Movie') 
 
  def __repr__(self): 
    return '<Genre "%s">' % self.name 
 
class Actor(Person): 
  using_options(inheritance='multi') 
  using_options(tablename='actor') 
 
  movies = ManyToMany('Movie') 
 
  def __repr__(self): 
    return '<Actor "%s">' % self.name

model_test.py

from model import * 
 
# setup_all(True) is equal to the following two staps: 
setup_all() # create sqlalchemy table object as mapper object for the class 
create_all() # take all table objcts and create real tables by issuing SQL statements on the databse. 
 
Actor1 = Actor(name=u"lvliang") 
scifi = Genre(name = u"Science-Fiction") 
rscott = Director(name = u"Ridley Scott") 
glucas = Director(name = u"George Lucas") 
alien = Movie(title = u"Alien", year = 1979, director=rscott, genres=[scifi, Genre(name=u"Horror")], actor = [Actor1]) 
brunner = Movie(title = u"Blade Runner", year = 1982, director = rscott, genres=[scifi]) 
swars = Movie(title = u"Star Wars", year = 1977, director = glucas, genres=[scifi]) 
session.commit() 
 
 
m1 = Movie.query.filter_by(title=u"Alien").one() 
m2 = Movie.query.filter(Movie.year>1980).all() 
m3 = Movie.query.filter(Movie.director.has(name = u"Ridley Scott")).all() 
m4 = Movie.query.filter(Movie.director.has(Director.name.endswith(u"Scott"))).all() 
m5 = Movie.query.filter(Movie.genres.any(name = u"Horror")).all() 
 
print m1 
print m2 
print m3 
print m4 
print m5 
 
d = Director.get_by(name = u"Ridley Scott") # Class.get_by(xxx) is a shortcut for Class.query.filter_by(xxx).first 
q = Movie.query.filter_by(director = d) #get all movies directed by director d 
m = q.filter_by(year = 1979).all() 
print "Movie direct by %s in year 1979 are " %(d.name) 
print m 
 
movies = q.order_by(sqlalchemy.desc(Movie.year)).all() 
print movies 
fro m in movies: 
  m.delete() 
session.commit()

执行model.py,结果为:

python通过elixir包操作mysql数据库实例代码

查看数据库,结果为:

python通过elixir包操作mysql数据库实例代码

总结

以上就是本文关于python通过elixir包操作mysql数据库实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python简单实现获取当前时间
Aug 27 Python
使用Python处理Excel表格的简单方法
Jun 07 Python
python3中函数参数的四种简单用法
Jul 09 Python
使用python实现快速搭建简易的FTP服务器
Sep 12 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
python matplotlib包图像配色方案分享
Mar 14 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 Python
Python如何定义接口和抽象类
Jul 28 Python
Python文件的操作示例的详细讲解
Apr 08 Python
python热力图实现的完整实例
Jun 25 Python
Django视图和URL配置详解
Jan 31 #Python
Python编程求质数实例代码
Jan 31 #Python
Python及Django框架生成二维码的方法分析
Jan 31 #Python
Python进阶之尾递归的用法实例
Jan 31 #Python
简单的python协同过滤程序实例代码
Jan 31 #Python
Python进阶之递归函数的用法及其示例
Jan 31 #Python
Python tkinter事件高级用法实例
Jan 31 #Python
You might like
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
js实现网页收藏功能
2015/12/17 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
2018/08/30 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python 实现插入排序算法
2012/06/05 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
Python实现按中文排序的方法示例
2018/04/25 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
python画图的函数用法以及技巧
2019/06/28 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
python随机模块random使用方法详解
2020/02/14 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
酒店管理自荐信
2013/10/23 职场文书
区域总监的岗位职责
2013/11/21 职场文书
商场中秋节广播稿
2014/01/17 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
文明寝室标语
2014/06/13 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL
Python中with上下文管理协议的作用及用法
2022/03/18 Python
在 Python 中利用 Pool 进行多线程
2022/04/24 Python