标签: sqlalchemy-migrate

sqlalchemy:“‘InstrumentedAttribute’对象和‘Comparator’对象都没有属性”错误

我已经使用 sqlalchemy 和 sqlalchemy-migrate 向数据库添加了一个表,当我对命中数据库的无关代码运行单元测试时,出现以下错误:

Traceback (most recent call last):
  File "/Users/lorin/nova/instance_type_metadata/.nova-venv/lib/python2.6/site-packages/nose/suite.py", line 208, in run
    self.setUp()
  File "/Users/lorin/nova/instance_type_metadata/.nova-venv/lib/python2.6/site-packages/nose/suite.py", line 291, in setUp
    self.setupContext(ancestor)
  File "/Users/lorin/nova/instance_type_metadata/.nova-venv/lib/python2.6/site-packages/nose/suite.py", line 314, in setupContext
    try_run(context, names)
  File "/Users/lorin/nova/instance_type_metadata/.nova-venv/lib/python2.6/site-packages/nose/util.py", line 478, in try_run
    return func()
  File "/Users/lorin/nova/metadata-debugging/nova/tests/__init__.py", line 62, in setup
    FLAGS.vpn_start,
  File "/Users/lorin/nova/metadata-debugging/nova/network/manager.py", line 577, in create_networks
    network_ref = db.network_get_by_cidr(context, cidr)
  File "/Users/lorin/nova/metadata-debugging/nova/db/api.py", line 628, in network_get_by_cidr
    return IMPL.network_get_by_cidr(context, cidr)
  File "/Users/lorin/nova/metadata-debugging/nova/db/sqlalchemy/api.py", line 99, in wrapper
    return f(*args, **kwargs)
  File "/Users/lorin/nova/metadata-debugging/nova/db/sqlalchemy/api.py", line 1308, in …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy sqlalchemy-migrate

7
推荐指数
1
解决办法
9007
查看次数

我在哪里可以找到sqlalchemy-migrate的好例子或教程

这个帖子中,有人指出我使用sqlalchemy-migrate来帮助使用sqlalchemy快速变化的Web应用程序.但是,还建议使用" 自己动手"方法,包括手动为新数据库模式编写CSV列,最后导入它们.

问题是我无法找到sqlalchemy-migrate的真实示例.我发现的资源最多只需要添加一个列或一列重命名.官方文档基本上描述了API,很难看到如何有效地使用迁移.从文档中我甚至不知道迁移是否有助于更改数据库引擎,例如从sqlite到mysql,而DIY解决方案可以完成工作.

我真的希望看到代码可以对数据库模式进行一些非平凡的转换,并证明迁移确实是一个有用的工具.

我在哪里可以找到sqlalchemy-migrate的好例子/教程?

谢谢 !

pylons data-migration sqlalchemy sqlalchemy-migrate

6
推荐指数
1
解决办法
1162
查看次数

是否有一个SQLAlchemy相当于django-evolution?

我想要的是有一个类似于以下的工作流程:

  1. 将django_evolution添加到项目的INSTALLED_APPS中
  2. 运行./manage.py syncdb
  3. 修改项目中的模型文件
  4. 运行./manage.py evolve --hint --execute

这是非常简单的,即使它不支持高级功能(如多个数据库),它确实知道如何添加/删除列,这是一个常见的用例.

SQLAlchemy的-迁移相比具有出奇复杂的工作流和两个教程(1,2)由该文档引用的或者是过时的或者不相关的.

python database django sqlalchemy sqlalchemy-migrate

6
推荐指数
1
解决办法
465
查看次数

测试数据库迁移结果是否与(ORM)一致?楷模

migrate用来创建SQL数据库模式并用初始数据填充它.后来SQLAlchemy用于处理此DB.

我怎样才能测试我的SQLAlchemy模型是否与生成的真实数据库模式相关/正确migrate

python sql sqlalchemy migrate sqlalchemy-migrate

6
推荐指数
1
解决办法
154
查看次数

SQLAlchemy Migrate - 我可以将列添加(或修改)到现有表的某个位置吗?

我想将列添加到现有表的某个位置或移动其中一列.但我在Sqlalchemy-migrate中找不到任何方法.

我想知道sqlalchemy-migrate中MySQL查询后的等效方法

ALTER TABLE tablename ADD column_name2 INT AFTER column_name1
ALTER TABLE tablename ADD column_name2 INT FIRST
ALTER TABLE tablename MODIFY COLUMN column_name2 INT AFTER column_name1;
Run Code Online (Sandbox Code Playgroud)

python sql sqlalchemy sqlalchemy-migrate

6
推荐指数
1
解决办法
564
查看次数

升级Pyramid/SQLAlchemy Web应用程序

我有一个标准的磨机Pylons金字塔应用程序,它使用SQLAlchemy作为其数据库持久性.

我已经设置了一个SQLAlchemy-migrate repo并使其正常运行,但我真的希望能够使用paster升级和降级数据库,或者至少某种方式让用户(安装鸡蛋后)升级/降级数据库到所需的版本.

我现在已将它内置到我的应用程序中,因此在应用程序启动时它会进行版本升级,但我宁愿选择用户明确必须升级数据库的内容,以便他们确切知道发生了什么,并且知道事先做备份.

我该怎么办呢?如何添加粘贴命令?

用户设置应用程序的方式是:

paste make-config appname production.ini
paste setup-app production.ini#appname
Run Code Online (Sandbox Code Playgroud)

要进行第一次设置,要进行数据库升级或升级,我希望:

paste upgrade-app production.ini#appname
Run Code Online (Sandbox Code Playgroud)

或类似的规定.

python sqlalchemy paster sqlalchemy-migrate pyramid

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

Alembic降级似乎不了解元数据

model.py看起来是这样的:

import datetime

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Numeric, ForeignKey, DateTime, Boolean
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, relationship

from configs import config_base as config
Base = declarative_base()


class User(Base):
    __tablename__ = 'user'

    id = Column(String, unique=True, primary_key=True)
    name = Column(String(100), nullable=False)
    team_id = Column(String, ForeignKey('team.id'))
    last_modified_on = Column(DateTime, default=datetime.datetime.utcnow())
    team = relationship('Team', back_populates='members')


class Team(Base):
    __tablename__ = 'team'

    id = Column(String, unique=True, primary_key=True)
    name = Column(String, nullable=False)
    bot_access_token = Column(String(100), …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy sqlalchemy-migrate alembic python-3.5

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

如何为 Alembic 迁移中的每一行设置唯一值

uidMyModel模型添加了一个独特的属性:

class MyModel(db.Model):
...
    uid = db.Column(db.String(50), nullable=False)
...
    __table_args__ = (UniqueConstraint('uid', name='unique_uid'),)
Run Code Online (Sandbox Code Playgroud)

我有一个迁移:

def upgrade():
    op.add_column('mymodel', sa.Column('uid', sa.String(length=50), nullable=True))

    mymodel = table('mymodel', column('uid'))
    op.execute(mymodel.update().values(uid=generate_uid()))
    op.create_unique_constraint('unique_uid', 'mymodel', ['uid'])

    op.alter_column(
        table_name='mymodel',
        column_name='uid',
        nullable=False
    )
Run Code Online (Sandbox Code Playgroud)

运行时db upgrade我遇到错误:

...
psycopg2.IntegrityError: could not create unique index "unique_uid"
DETAIL:  Key (uid)=(c92U6txA2) is duplicated.
Run Code Online (Sandbox Code Playgroud)

如何为 op.execute(mymodel.update().values(uid=generate_uid())) 上的每一行设置唯一值?

$ pip freeze
alembic==0.8.6
Flask==0.10.1
Flask-Fixtures==0.3.3
Flask-Login==0.3.2
Flask-Migrate==1.8.0
Flask-Script==2.0.5
Flask-SQLAlchemy==2.1
itsdangerous==0.24
Jinja2==2.8
Mako==1.0.4
MarkupSafe==0.23
psycopg2==2.6.1
python-editor==1.0
requests==2.10.0
SQLAlchemy==1.0.13
Werkzeug==0.11.9
Run Code Online (Sandbox Code Playgroud)

sqlalchemy sqlalchemy-migrate flask alembic flask-migrate

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

Postgres'用于编码“UTF8”的排序规则“NOCASE”不存在'

我正在尝试在新系统上设置新的数据库,但出现此错误:

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedObject) collation "NOCASE" for encoding "UTF8" does not exist
LINE 4:  email VARCHAR(120) COLLATE "NOCASE" NOT NULL, 
                            ^

[SQL: 
CREATE TABLE users (
    id SERIAL NOT NULL, 
    email VARCHAR(120) COLLATE "NOCASE" NOT NULL,
    password VARCHAR(128) NOT NULL
)
]
Run Code Online (Sandbox Code Playgroud)

我没有更改任何内容,但这适用于两台不同的计算机,其中一台运行 Postgresql 10。我使用 SqlAlchemy 升级运行此查询只是为了获取信息。

我用这个创建了数据库:

CREATE DATABASE db
    WITH 
    OWNER = postgres
    ENCODING = 'UTF8'
    LC_COLLATE = 'tr_TR.utf8'
    LC_CTYPE = 'tr_TR.utf8'
    TABLESPACE = pg_default
    CONNECTION LIMIT = -1;
Run Code Online (Sandbox Code Playgroud)

postgresql sqlalchemy sqlalchemy-migrate

5
推荐指数
0
解决办法
3130
查看次数

SQLAlchemy创建表时出现外键关系错误

我使用sqlalchemy创建表,其中一些表具有多个外键关系,下面是代码。我收到错误消息:

sqlalchemy.exc.NoForeignKeysError:找不到“项目”和“类型”之间的任何外键关系

尝试运行脚本时。

谁能解释我如何在sqlalchemy中创建表,如果存在具有多个关系的表,则创建的顺序。

   import sqlalchemy
   from  sqlalchemy.orm import *
   from sqlalchemy.ext.declarative import declarative_base
   import datetime
   from sqlalchemy import *


   engine =               sqlalchemy.create_engine('postgresql+psycopg2://postgres:newpassword@localhost:5432/test');


   Session = sessionmaker(bind=engine)


   session = Session()

   metadata = MetaData(engine)


   metadata.drop_all(engine)

   Base = declarative_base(metadata=metadata)

   class User(Base):
        __tablename__ = 'users'
        id = Column(Integer,primary_key = True)
        email = Column(String(30),nullable = False)
        password = Column(String(30),nullable = False)

   class Genre(Base):
        __tablename__ = 'genre'
        id = Column(Integer,primary_key = True)
        title = Column(String(30),nullable = False)

   class Status(Base):
        __tablename__ = 'status'
        id = Column(Integer,primary_key = …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy sqlalchemy-migrate flask-sqlalchemy

4
推荐指数
1
解决办法
7780
查看次数