python通過elixir包操作mysql數(shù)據(jù)庫實(shí)例代碼
本文研究的主要是python通過elixir包操作mysql數(shù)據(jù)庫的相關(guān)實(shí)例,具體如下。
python操作數(shù)據(jù)庫有很多方法,下面介紹elixir來操作數(shù)據(jù)庫。elixir是對(duì)sqlalchemy lib的一個(gè)封裝,classes和tables是一一對(duì)應(yīng)的,能夠一步定義classes,tables和mappers,支持定義多個(gè)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()
執(zhí)行model.py,結(jié)果為:

查看數(shù)據(jù)庫,結(jié)果為:

總結(jié)
以上就是本文關(guān)于python通過elixir包操作mysql數(shù)據(jù)庫實(shí)例代碼的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- Python操作MongoDB數(shù)據(jù)庫的方法示例
- Python實(shí)現(xiàn)連接postgresql數(shù)據(jù)庫的方法分析
- Python實(shí)現(xiàn)生成隨機(jī)數(shù)據(jù)插入mysql數(shù)據(jù)庫的方法
- python 3.6 +pyMysql 操作mysql數(shù)據(jù)庫(實(shí)例講解)
- Python實(shí)現(xiàn)mysql數(shù)據(jù)庫更新表數(shù)據(jù)接口的功能
- MySQL數(shù)據(jù)庫設(shè)計(jì)之利用Python操作Schema方法詳解
- Python 模擬員工信息數(shù)據(jù)庫操作的實(shí)例
- Python3操作SQL Server數(shù)據(jù)庫(實(shí)例講解)
相關(guān)文章
Python構(gòu)造函數(shù)與析構(gòu)函數(shù)超詳細(xì)分析
在python之中定義一個(gè)類的時(shí)候會(huì)在類中創(chuàng)建一個(gè)名為__init__的函數(shù),這個(gè)函數(shù)就叫做構(gòu)造函數(shù)。它的作用就是在實(shí)例化類的時(shí)候去自動(dòng)的定義一些屬性和方法的值,而析構(gòu)函數(shù)恰恰是一個(gè)和它相反的函數(shù),這篇文章主要介紹了Python構(gòu)造函數(shù)與析構(gòu)函數(shù)2022-11-11
Python實(shí)現(xiàn)Excel和CSV之間的相互轉(zhuǎn)換
通過使用Python編程語言,編寫腳本來自動(dòng)化Excel和CSV之間的轉(zhuǎn)換過程,可以批量處理大量文件,定期更新數(shù)據(jù),并集成轉(zhuǎn)換過程到自動(dòng)化工作流程中,本文將介紹如何使用Python 實(shí)現(xiàn)Excel和CSV之間的相互轉(zhuǎn)換,需要的朋友可以參考下2024-03-03
詳解在Python中以絕對(duì)路徑或者相對(duì)路徑導(dǎo)入文件的方法
這篇文章主要介紹了詳解在Python中以絕對(duì)路徑或者相對(duì)路徑導(dǎo)入文件的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
python 獲取頁面表格數(shù)據(jù)存放到csv中的方法
今天小編就為大家分享一篇python 獲取頁面表格數(shù)據(jù)存放到csv中的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12
html網(wǎng)頁調(diào)用后端python代碼的方法實(shí)例
html頁面中確實(shí)能夠調(diào)用python程序,不過只能調(diào)“一點(diǎn)點(diǎn)”,下面這篇文章主要給大家介紹了關(guān)于html網(wǎng)頁調(diào)用后端python代碼的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
在樹莓派2或樹莓派B+上安裝Python和OpenCV的教程
這篇文章主要介紹了在樹莓派2或樹莓派B+上安裝Python和OpenCV的教程,主要基于GTK庫,并以Python2.7和OpenCV 2.4.X版本的安裝作為示例,需要的朋友可以參考下2015-03-03
python算法學(xué)習(xí)雙曲嵌入論文代碼實(shí)現(xiàn)數(shù)據(jù)集介紹
由于雙曲嵌入相關(guān)的文章已經(jīng)有了一系列的代碼。本篇博客主要目的實(shí)現(xiàn)最開始的雙曲嵌入論文,將論文中有些直接寫出來的內(nèi)容進(jìn)行了細(xì)節(jié)的推導(dǎo),同時(shí)實(shí)現(xiàn)對(duì)應(yīng)的代碼2021-11-11

