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

作者:y2701310012 时间:2024-01-26 04:12:16 

本文研究的主要是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数据库实例代码

来源:http://blog.csdn.net/y2701310012/article/details/40480421

标签:python,elixir,mysql数据库
0
投稿

猜你喜欢

  • python笔记(1) 关于我们应不应该继续学习python

    2023-06-05 17:25:00
  • Go语言interface详解

    2023-07-05 16:55:33
  • python实现计算器小功能

    2022-07-15 04:33:56
  • Go语言中并发的工作原理

    2024-05-08 10:13:25
  • Python自动发送和收取邮件的方法

    2023-10-09 17:58:56
  • 一款Python工具制作的动态条形图(强烈推荐!)

    2021-07-21 17:38:18
  • 柳永法:vbs或asp采集文章时网页编码问题

    2009-02-04 10:50:00
  • Python Pygame实现落球游戏详解

    2021-06-23 00:54:38
  • oracle 存储过程加密的方法

    2024-01-13 12:49:10
  • wxpython布局的实现方法

    2022-01-31 10:20:57
  • python集合用法实例分析

    2021-10-26 23:36:37
  • python批量翻译excel表格中的英文

    2022-11-16 08:09:07
  • python机器学习之神经网络(一)

    2023-06-21 23:28:42
  • python中如何使用insert函数

    2023-08-02 17:04:43
  • SQLServer2005 没有日志文件(*.ldf) 只有数据文件(*.mdf) 恢复数据库的方法

    2024-01-24 00:15:37
  • vuex实现数据状态持久化

    2024-04-30 10:34:38
  • 交互因视觉设计而更完美

    2008-05-31 17:22:00
  • Python中实现结构相似的函数调用方法

    2021-12-04 10:31:03
  • 全面了解python中的类,对象,方法,属性

    2021-10-07 10:54:50
  • 深度学习Tensorflow2.8实现GRU文本生成任务详解

    2022-07-27 09:04:21
  • asp之家 网络编程 m.aspxhome.com