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获取GY-85九轴模块信息示例
Dec 05 Python
Python中比较特别的除法运算和幂运算介绍
Apr 05 Python
Python中逗号的三种作用实例分析
Jun 08 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
Python编写登陆接口的方法
Jul 10 Python
基于python OpenCV实现动态人脸检测
May 25 Python
在cmder下安装ipython以及环境的搭建
Oct 19 Python
Python3实现的回文数判断及罗马数字转整数算法示例
Mar 27 Python
Python基于机器学习方法实现的电影推荐系统实例详解
Jun 25 Python
详解python播放音频的三种方法
Sep 23 Python
使用Python生成200个激活码的实现方法
Nov 22 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读MYSQL中文乱码的解决方法
2006/12/17 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
python动态参数用法实例分析
2015/05/25 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
Python模块常用四种安装方式
2020/10/20 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
职业生涯规划书的格式
2013/12/29 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
学校消防安全责任书
2014/07/23 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
2015年幼师工作总结
2015/04/28 职场文书
运动会广播稿20字
2015/08/19 职场文书