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中mechanize库的简单使用示例
Jan 10 Python
python实现超简单端口转发的方法
Mar 13 Python
Python实现的科学计算器功能示例
Aug 04 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
Dec 18 Python
Python简单生成随机数的方法示例
Mar 31 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
Mac 使用python3的matplot画图不显示的解决
Nov 23 Python
如何基于Python获取图片的物理尺寸
Nov 25 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 Python
Python 图片处理库exifread详解
Feb 25 Python
pytorch实现手写数字图片识别
May 20 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
php header()函数使用说明
2008/07/10 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
jscript之Open an Excel Spreadsheet
2007/06/13 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
python openpyxl模块的使用详解
2021/02/25 Python
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
项目施工员岗位职责
2014/03/09 职场文书
环境整治工作方案
2014/05/18 职场文书
公司经理任命书
2014/06/05 职场文书
学习经验交流会策划书
2015/11/02 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python