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实现基于HTTP文件传输实例
Nov 08 Python
Python机器学习之决策树算法实例详解
Dec 06 Python
Python中eval带来的潜在风险代码分析
Dec 11 Python
django实现用户登陆功能详解
Dec 11 Python
python版微信跳一跳游戏辅助
Jan 11 Python
浅谈Python的条件判断语句if/else语句
Mar 21 Python
Pandas中DataFrame的分组/分割/合并的实现
Jul 16 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
python实现ssh及sftp功能(实例代码)
Mar 16 Python
python zip,lambda,map函数代码实例
Apr 04 Python
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 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导出中文内容excel文件类实例
2015/07/06 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
JQuery 学习技巧总结
2010/05/21 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
JS代码检查工具ESLint介绍与使用方法
2020/02/04 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
python使用KNN算法手写体识别
2018/02/01 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
浅析python参数的知识点
2018/12/10 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
光电信息专业应届生求职信
2013/10/07 职场文书
知识竞赛主持词
2014/03/26 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
企业法人代表证明书
2014/09/27 职场文书
思想工作总结范文
2015/08/12 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers