未加星标

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

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二05 | 时间 | 作者 红领巾 ] 0人收藏点击收藏

本文研究的主要是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操作MongoDB数据库的方法示例Python实现连接postgresql数据库的方法分析Python实现生成随机数据插入mysql数据库的方法python 3.6 +pyMysql 操作mysql数据库(实例讲解)Python实现mysql数据库更新表数据接口的功能MySQL数据库设计之利用Python操作Schema方法详解Python 模拟员工信息数据库操作的实例Python3操作SQL Server数据库(实例讲解)

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

tags: Movie,name,self,elixir,options,using,year,director,数据库,print,filter,movies,mysql
分页:12
转载请注明
本文标题:python通过elixir包操作mysql数据库实例代码
本站链接:http://www.codesec.net/view/572293.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(22)