提供一些使用sqlalchemy获取对象的方法

sqla_helpers的Python项目详细描述


('helpers sqlalchemy-:类:`sqla_helpers.base_model.basemodel`\n==============================================\n安装\n-------\n\n。rubric::git\n\n来自git的安装\n\n..代码块::console\n\n$>git clone git@github.com:moumoutte/sqla_helpers.git\n$>cd sqla_helpers\n$>sudo python2.7 setup.py install\n\n。rubric::eggs\n\n来自pypi"eggs"的安装`\n\n..代码块::console\n\n$>sudo pip install sqla_helpers\n\n\n设置已开始\n--------\n\n目标:class:`sqla_helpers.base_model.basemodel`为:mod:`sqlalchemy`提供语法糖。\n\n\n:class:`sqla_helpers.base_model.basemodel`用作mixin类。该类不继承任何内容,因此不应继承该类。\n对于模型中的访问方法,需要将模型声明为如下所示:代码块::python\n from somewhere import declarativebase\n from sqla_helpers.base_model import basemodel\n\n类mymodel(declarativebase,basemodel):\n id=…#克里夫·普里米尔,我发现了一个非常棒的灵魂。#attribut quelconque du mod\xc3\xa8le\n other_model=关系(\'myThermodel',backref=\'myModel\')\n\n\n类myThermodel(declarativeBase,baseModel):\n id=…#谱号primaire\n name=…\n model\u id=…#谱号\xc3\xa9trang\xc3\xa8re sur mymodel\n\n\n:Class:`DeclarativeBase`类由'SqlAlchemy'中的:func:`Declarative_base`函数生成。\n\n若要避免混合使用,:Class:`Sqla_helpers.base_model.basemodel`类可以用作:func:`Declarative_base`函数中的'cls'参数。n\n代码块::python\n from sqlalchemy.ext.declarative import declarative_base\n from sqla_helpers.base_model import basemodel\n declarativebase=declarative_base(cls=basemodel)\n\n\n。代码块::python\n\n类mymodel(declarativebase):\n…\n\n\n:class:`sqla_helpers.base_model.basemodel`需要在查询完成时生成会话。\n为了在需要时访问会话,类使用存储的函数:attr:`sqla_helpers.base_model.basemodel.sessionmaker`。\每次需要会话时都将调用此函数。\n因此,我们需要通过调用"sqla_helpers.base_model.basemodel.register_session maker"方法来存储会话生成器。\n\n。代码块::python\n应用程序的初始化\n def main():\n…\n basemodel.register _sessionmaker(scoped_session(sessionmaker(bind=engine))\n…\n\n对于全局会话,您可以只给出一个不是"可调用"的会话。代码块::python\n from somwhere import dbsession\n\n应用程序的初始化\n def main():\n…\n basemodel.register _session maker(dbsession)\n…\n\n注册会话生成器可能很危险。因为,从技术上讲,我们动态地更改类方法。为了防止错误,如果会话生成器已注册,则会引发异常:exc:`sqla_helpers.base_model.sessionmakerexists`。\n\n但有时,可能需要在应用程序运行时更改它。因此,即使会话生成器已注册,也可以强制创建新记录。代码块::python\n>>>basemodel.register_session maker(db_session)\n>>>new_db_session=amazing_function()\n>>>basemodel.register_sessionmaker(new_db_session)\n traceback(最近一次调用时间):\n file"",第1行,in\n sessionmakersists:会话生成器已注册。\n>>basemodel.register_sessionmaker(new_db_session,force=true)n\n基本用例:\ n\n.。代码块::python\n>>>mymodel.all()\n[]\n>>>mymodel.get(id=2)\n\n>>>mymodel.get(id=3)\n***noresultfound:one()没有找到行\n>>mymodel.filter(id=2)\n[]\n>>>mymodel.filter(id=3)\n[]\n>>>mymodel.count(id=2)n 1\n\n\n*:meth:`sqla_helpers.base_model.basemodel.all`返回所有数据库对象\n*:meth:`sqla_helpers.base_model.basemodel.filter`返回匹配对象的列表。\n*:meth:`sqla_helpers.base_model.basemodel.get`返回uniq匹配对象。\n*:meth:`sqla_helpers.base_model.basemodel.count`返回匹配对象的数目。\n\n查询标准可以用`&`(逻辑和)运算符链接。\n\n。代码块::python\n>>>myThermodel.filter(name=\'ToTo')\n[]\n>>>myThermodel.filter(name=\'ToToTo',id=2\n[]\n\n\n查询关系上的标准\n----------\n有效的查询标准类是由类属性定义的。\nIE:在"myThermodel"的情况下,标准可以是"id"、"name"和"model\u id"。\n\n对于sqlachemy关系,这仍然是正确的。\n\nIE:查询所有"mymodel"witch"myThermodel"都有一个"foo"名称。\n\n。代码块::python\n>>>mymodel.filter(awesome\u attr\u name=\'foo')\n[]\n\n\n查询整个对象。\n\n。代码块::python\n>>>othermodel=myothermodel.get(name=\'foo')\n>>>mymodel.filter(awesome\u attr=othermodel)\n[]\n\n\n `\n分隔符(双下划线)允许在不同的实体之间拆分。\n\n可以递归地使用关系属性进行查询。\n如果"myotherobject"有一个"other"_ attr`与'myotherotherobject'对象相关的属性。\n\n用'myotherobject'查询所有'mymodel'的'myotherotherobject'的'name'属性是'foo'。\n\n.代码块::python\n>>>mymodel.filter(awesome_u attr_u other_u attr_u name=\'foo')\n[]\n\n\n\n运算符\n------\n\n不能使用等号以外的运算符。这些运算符应该用属性名跟在"uuuu"(双下划线)后面和运算符名一起写入。\n\nie:如果需要所有"id"不同于2的"mymodel":\n\n。代码块::Python\n\n>>>>>MyModel.Filter(ID\u不等于2)MyModel.Filter(ID\u不等于2)n[]\n\n\n可使用的运算符是:\n\n*\'''Not\':不等于\n*\'lt \':Letter than\n*\''le \':Letter或等于\n*\'gt':gretterthan\n*\'ge \':gretter或等于\n*\'ge\':gretter或等于\n*\'in",\n*\'in\'in \'':在列表中,\n*\'like":"like":"like":"like":"like":"like":一ying\n--------\n\n作为django方式,:mod:`sqla_helpers`为更复杂的查询提供a:class:`sqla_helpers.logical.q`对象。\n:class:`sqla_helpers.logical.q`对象可以使用:mod:`sqla_helpers`语法。\n\n.代码块::python\n>>>from sqla_helpers.logical import q\n>>>q(status_u name=\'test\')\n\n\n这些对象可用作查询的标准。\n\n:类:`sqla_helpers.base_model.basemodel`\n\n。代码块::python\n\n>>>treatment.get(q(id=2))\n>>\n\n这些对象的目标是允许python语法中的sql逻辑条件。\n\n如果需要所有id`==2或status`name==\'ko'的"treatment"对象。\n\n。代码块::python\n>>>treatment.filter(q(id=2)q(status_u name=\'ko')\n[]\n\n\n要获取"id"属性不同于2的所有"treatment"对象,请执行以下操作:代码块::python\n\n>>>treatment.filter(~q(id=2))\n[,\n]\n\n逻辑运算符可以被链接:\ n\n。代码块::python\n>>>treatment.filter((q(id=2)q(name=\'toto')&(q(name=\'ok')~q(status=\'u id=3)))\n 2013-02-10 16:39:49485 info sqlalchemy.engine.base.engine select\n treatment.id作为治疗id,treatment.name作为治疗名称,treatment.status作为治疗状态id从status.id=treatment.status\n的治疗加入状态(treatment.id=?或treatment.name=?)和(treatment.name=?或\n status.id!=?)\ n 2013-02-10 16:39:49485 info sqlalchemy.engine.base.engine(2,\'to to',\'ok',\n 3)>>[]\n\n\n json\n----\n\n在面向Web的应用程序中,客户端和服务器用JSON格式交换。\n为了更容易加载,:mod:`sqla\u helpers'提供从规则加载的方法。ar python dictionary或sqlalchemy model对象。\n\n:meth:`sqla_helpers.base_model.basemodel.dump`方法允许使用json兼容的字典。\n\n.代码块::python\n\n>>>print json.dumps(t.dump(),indent=4)n{\n"status":{\n"id":1,"name":"ok"\n},"status戋id":1,"id":1,"name":"great treatment"\n}\n\n"sqla戋helpers.base戋model.basemodel.load"方法可以生成字典中的对象。\n使用字典的意思是方便访问JSON中的数据或从字典中生成JSON。\n\n如果在字典中找到主键属性,则对象是从数据库中获取的。否则将创建新对象。\n\n..代码块::python\n>>>t=treatment.get(id=7)\n>>>t.name\n"是的"\\\o/\'\n>>>t.id\n 7\n>>>t.status.name\n"神圣状态"!\'\n>>>t.status.id\n 7\n>>>t=treatment.load({'id':7,\'name':\'hello'})\n>>>t.name,t.id\n(\'hello',7)\n>>>session.commit()\n>>t.dump()\n{\n'id':7,''name':u'hello',\n'status':{'id':7,\'name':u'holy status'S!\'},'状态id':7\n}\n>>>tr=treatment.load(t.dump())\n>>>tr==t\n true\n>>>tr.status==t.status\n true\n>>>treatment.load(tr.dump()).dump()\n{\n'id':7,'名称':u'hello',\n'status':{'id':7,'名称'\':u'神圣的地位!\'},n'status\u id':7\n}\n>>>tr=treatment.load({'name':\'new treatment',\'status':{'name':\'new status\'})>>tr.id\n none\n>>>tr.status.id\n none\n>>>session.add(tr)>>session.commit()\n>>>tr.id\n 10\n>>>tr.status.id\n8\n\n\n:类:`sqla_helpers.base_model.basemodel`类\n==============================\n\n。automodule::sqla_helpers.base_model\n',)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java resultSet next()方法不返回任何值   java向数组中添加元素?   java在字符串中替换代词   使用ajax时java搜索数据库不工作   java tomcat表示此url不支持http方法post   java正在发生什么   java浏览器不生成文件下载对话框   带有CR和CF的java javascript textarea maxlength问题   javamaven:如何配置javadoc来生成所有私有和包   java问题:“用作trywithresources资源的变量应该是final或实际上是final”   java类只是为了语义   java httpclient在glassfish servlet中发布到https时出现“SSL证书错误”   java图形用户界面不可见错误   我的java CORBA聊天应用程序中出现“org.omg.CORBA.COMM_FAILURE:vmcid:SUN minor code:208 completed:Maybe”错误的原因是什么   javascript在服务器端创建电子邮件草稿并在用户客户端打开   java向JComboBox添加隐藏按钮   使用Java是可能的。awt。图像安卓应用程序