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爬虫框架Scrapy安装使用步骤
Apr 01 Python
Python判断字符串与大小写转换
Jun 08 Python
Python 加密的实例详解
Oct 09 Python
详解Python map函数及Python map()函数的用法
Nov 16 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
Window环境下Scrapy开发环境搭建
Nov 18 Python
python去除拼音声调字母,替换为字母的方法
Nov 28 Python
django的settings中设置中文支持的实现
Apr 28 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
python代码编写计算器小程序
Mar 30 Python
如何基于python实现画不同品种的樱花树
Jan 03 Python
python 经纬度求两点距离、三点面积操作
Jun 03 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
1 Tube Radio
2021/03/02 无线电
PHP生成带有雪花背景的验证码
2008/09/28 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
2011/10/23 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
TensorFlow 滑动平均的示例代码
2018/06/19 Python
Python中@property的理解和使用示例
2019/06/11 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
.NET常见笔试题集
2012/12/01 面试题
应届生的求职推荐信范文
2013/11/30 职场文书
动员大会主持词
2014/03/20 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
分居协议书范本
2014/11/03 职场文书
廉政承诺书2015
2015/04/28 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
六年级语文教学反思
2016/03/03 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
python中redis包操作数据库的教程
2022/04/19 Python