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 相关文章推荐
30分钟搭建Python的Flask框架并在上面编写第一个应用
Mar 30 Python
Python代码缩进和测试模块示例详解
May 07 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
numpy向空的二维数组中添加元素的方法
Nov 01 Python
Python Matplotlib库安装与基本作图示例
Jan 09 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
python使用selenium实现批量文件下载
Mar 11 Python
python3中property使用方法详解
Apr 23 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
May 10 Python
Python多线程threading创建及使用方法解析
Jun 17 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
python打包生成so文件的实现
Oct 30 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
建立文件交换功能的脚本(二)
2006/10/09 PHP
用PHP实现多级树型菜单
2006/10/09 PHP
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
php实现简单洗牌算法
2013/06/18 PHP
使用PHP导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
js如何打印object对象
2015/10/16 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
利用python求积分的实例
2019/07/03 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
PyTorch预训练的实现
2019/09/18 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
为什么需要版本控制
2016/10/28 面试题
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
法人身份证明书
2014/10/08 职场文书
2014年技术员工作总结
2014/11/18 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
聘任书的格式及模板
2019/10/28 职场文书