脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - python通过elixir包操作mysql数据库实例代码

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

2021-01-11 00:06y2701310012 Python

这篇文章主要介绍了python通过elixir包操作mysql数据库,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

本文研究的主要是python通过elixir包操作mysql数据库的相关实例,具体如下。

python操作数据库有很多方法,下面介绍elixir来操作数据库。elixir是对sqlalchemy lib的一个封装,classes和tables是一一对应的,能够一步定义classes,tables和mappers,支持定义多个primary key。

定义model.py

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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数据库实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

原文链接:http://blog.csdn.net/y2701310012/article/details/40480421

延伸 · 阅读

精彩推荐