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中几种导入模块的方式总结
Apr 27 Python
Python探索之自定义实现线程池
Oct 27 Python
Python抓取框架Scrapy爬虫入门:页面提取
Dec 01 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
python list多级排序知识点总结
Oct 23 Python
Django项目中使用JWT的实现代码
Nov 04 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
python中turtle库的简单使用教程
Nov 11 Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 Python
使用python向MongoDB插入时间字段的操作
May 18 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
Sep 25 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/04 星际争霸
PHP实现事件机制的方法
2015/07/10 PHP
php curl常用的5个经典例子
2017/01/20 PHP
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
2013/12/16 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
json.stringify()与json.parse()的区别以及用处
2021/01/25 Javascript
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
Python datetime包函数简单介绍
2019/08/28 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
python3中布局背景颜色代码分析
2020/12/01 Python
英国家电直销:Appliances Direct
2016/09/22 全球购物
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
python+selenium小米商城红米K40手机自动抢购的示例代码
2021/03/24 Python
毕业自荐信
2013/12/16 职场文书
旅游管理专业生自荐信范文
2014/01/02 职场文书
四好少年事迹材料
2014/01/12 职场文书
保护环境的宣传语
2015/07/13 职场文书