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基于Pymssql模块实现连接SQL Server数据库的方法详解
Jul 20 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
python实现windows壁纸定期更换功能
Jan 21 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
Python2与Python3的区别点整理
Dec 12 Python
Python PyInstaller库基本使用方法分析
Dec 12 Python
Python实现结构体代码实例
Feb 10 Python
python实现QQ邮箱发送邮件
Mar 06 Python
python中shell执行知识点
May 06 Python
python中pop()函数的语法与实例
Dec 01 Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 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读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
PHP register_shutdown_function()函数的使用示例
2015/06/23 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
学习JavaScript设计模式之享元模式
2016/01/18 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
js实现随机8位验证码
2020/07/24 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
python 调用c语言函数的方法
2017/09/29 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
python实现俄罗斯方块
2018/06/26 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
Python requests上传文件实现步骤
2020/09/15 Python
python 调用Google翻译接口的方法
2020/12/09 Python
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
教师个人读书活动总结
2014/07/08 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
2015年见习期工作总结
2014/12/12 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript