Python uses the elixir package to operate mysql database instance code, elixirmysql

Source: Internet
Author: User

Python uses the elixir package to operate mysql database instance code, elixirmysql

This article mainly describes how to use the elixir package to operate mysql database in python.

There are many methods to operate a database using python. The following describes how to operate a database using elixir. Elixir is an encapsulation of sqlalchemy lib. The classes and tables correspond one to one. It can define classes, tables, and mappers in one step, and supports defining multiple primary keys.

Define 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() 

Run model. py and the result is:

View the database. The result is:

Summary

The above is all about python operating mysql database instance code through the elixir package, and I hope to help you. If you are interested, you can continue to refer to other related topics on this site. If you have any shortcomings, please leave a message. Thank you for your support!

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.