python通过elixir包操作mysql数据库实例代码

 更新时间:2018年01月31日 15:54:51   作者:y2701310012  
这篇文章主要介绍了python通过elixir包操作mysql数据库,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

本文研究的主要是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构造函数与析构函数超详细分析

    Python构造函数与析构函数超详细分析

    在python之中定义一个类的时候会在类中创建一个名为__init__的函数,这个函数就叫做构造函数。它的作用就是在实例化类的时候去自动的定义一些属性和方法的值,而析构函数恰恰是一个和它相反的函数,这篇文章主要介绍了Python构造函数与析构函数
    2022-11-11
  • Python实现Excel和CSV之间的相互转换

    Python实现Excel和CSV之间的相互转换

    通过使用Python编程语言,编写脚本来自动化Excel和CSV之间的转换过程,可以批量处理大量文件,定期更新数据,并集成转换过程到自动化工作流程中,本文将介绍如何使用Python 实现Excel和CSV之间的相互转换,需要的朋友可以参考下
    2024-03-03
  • 详解在Python中以绝对路径或者相对路径导入文件的方法

    详解在Python中以绝对路径或者相对路径导入文件的方法

    这篇文章主要介绍了详解在Python中以绝对路径或者相对路径导入文件的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python贪吃蛇核心功能实现下

    python贪吃蛇核心功能实现下

    我想大家都玩过诺基亚上面的贪吃蛇吧,这篇文章将带你一步步用python语言实现一个snake小游戏,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-09-09
  • python 获取页面表格数据存放到csv中的方法

    python 获取页面表格数据存放到csv中的方法

    今天小编就为大家分享一篇python 获取页面表格数据存放到csv中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • html网页调用后端python代码的方法实例

    html网页调用后端python代码的方法实例

    html页面中确实能够调用python程序,不过只能调“一点点”,下面这篇文章主要给大家介绍了关于html网页调用后端python代码的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • 在树莓派2或树莓派B+上安装Python和OpenCV的教程

    在树莓派2或树莓派B+上安装Python和OpenCV的教程

    这篇文章主要介绍了在树莓派2或树莓派B+上安装Python和OpenCV的教程,主要基于GTK库,并以Python2.7和OpenCV 2.4.X版本的安装作为示例,需要的朋友可以参考下
    2015-03-03
  • PyQt5实现类似别踩白块游戏

    PyQt5实现类似别踩白块游戏

    这篇文章主要为大家详细介绍了PyQt5实现类似别踩白块游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • 浅谈Python中的函数传递问题

    浅谈Python中的函数传递问题

    这篇文章主要为大家介绍了Python函数传递问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • python算法学习双曲嵌入论文代码实现数据集介绍

    python算法学习双曲嵌入论文代码实现数据集介绍

    由于双曲嵌入相关的文章已经有了一系列的代码。本篇博客主要目的实现最开始的双曲嵌入论文,将论文中有些直接写出来的内容进行了细节的推导,同时实现对应的代码
    2021-11-11

最新评论