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