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常规方法实现数组的全排列
Mar 17 Python
Python实现给文件添加内容及得到文件信息的方法
May 28 Python
浅谈Python中的闭包
Jul 08 Python
python django事务transaction源码分析详解
Mar 17 Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 Python
Python静态类型检查新工具之pyright 使用指南
Apr 26 Python
Python Flask框架模板操作实例分析
May 03 Python
python程序 线程队列queue使用方法解析
Sep 23 Python
flask实现验证码并验证功能
Dec 05 Python
keras实现VGG16方式(预测一张图片)
Jul 07 Python
python简单利用字典破解zip文件口令
Sep 07 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 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
php中日期加减法运算实现代码
2011/12/08 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
python计算最大优先级队列实例
2013/12/18 Python
python实现的udp协议Server和Client代码实例
2014/06/04 Python
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
Python 功能和特点(新手必学)
2015/12/30 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
python制作图片缩略图
2019/04/30 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
临床医师专业个人自我评价范文
2013/11/07 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫