相关疑难解决方法(0)

我应该在SQLAlchemy中创建映射器对象还是使用声明性语法?

有两个(三个,但我不算Elixir,因为它不是"官方")用SQLAlchemy定义持久化对象的方法:

映射器对象的显式语法

from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey
from sqlalchemy.orm import mapper

metadata = MetaData()

users_table = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String),
)

class User(object):
    def __init__(self, name):
        self.name = name

    def __repr__(self):
       return "<User('%s')>" % (self.name)

mapper(User, users_table) # &lt;Mapper at 0x...; User&gt;
Run Code Online (Sandbox Code Playgroud)

声明性语法

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class User(Base):
     __tablename__ = 'users'
     id = Column(Integer, primary_key=True)
     name = Column(String)

     def __init__(self, name):
         self.name = name

     def …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

45
推荐指数
3
解决办法
7375
查看次数

使用 SQLAlchemy 时出现“NoneType”对象没有属性“get”错误

我一直在尝试使用 SQLAlchemy 将对象映射到数据库,但遇到了障碍。

Edit: Basically changed a whole bunch of stuff.
Run Code Online (Sandbox Code Playgroud)

版本信息(如果方便的话):[操作系统:Mac OSX 10.5.8 | Python:2.6.4 | SQLAlchemy:0.5.8]

我要映射的类:

class Student(object):
    def __init__(self, id, name):
        self.id = id
        self.name = name

    def __repr__(self):
        return str(self)

    def __str__(self):
        return "%s %s" %(self.id, self.name)
Run Code Online (Sandbox Code Playgroud)

背景:

现在,我有一个函数可以将必要的信息从文本数据库读入这些对象。该功能或多或少有效,我可以轻松地从对象中访问信息。

在 SQLAlchemy 代码运行之前,该函数将读取必要的信息并将其存储到类中。有一本名为的字典students,它这样存储:

students = {}
students[id] = Student(<all the info from the various "reader" functions>)
Run Code Online (Sandbox Code Playgroud)

之后,有一个“分配”算法将项目分配给学生。它做得足够好。就allocated_project好像None学生没有成功获得一个项目一样。

SQLAlchemy 位:

因此,在这一切发生之后,我想将我的对象映射到数据库表。

from sqlalchemy import *
from sqlalchemy.orm import *

engine = …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

5
推荐指数
1
解决办法
8521
查看次数

标签 统计

python ×2

sqlalchemy ×2