小编ABM*_*ABM的帖子

将命名约定添加到现有数据库

我正在使用sqlalchemy,我正在尝试将alembic集成到数据库迁移中.

我的数据库目前存在,并且定义了许多没有名称的ForeignKeys.我想添加一个命名约定,以允许影响ForeignKey列的迁移.

我已将此处给出的命名约定添加到models.py文件的顶部: SQLAlchemy Naming Constraints

convention = {
      "ix": 'ix_%(column_0_label)s',
      "uq": "uq_%(table_name)s_%(column_0_name)s",
      "ck": "ck_%(table_name)s_%(constraint_name)s",
      "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
      "pk": "pk_%(table_name)s"
              }

DeclarativeBase = declarative_base()


DeclarativeBase.metadata = MetaData(naming_convention=convention)

def db_connect():
   return create_engine(URL(**settings.DATABASE))

def create_reviews_table(engine):
    DeclarativeBase.metadata.create_all(engine)

class Review(DeclarativeBase):

    __tablename__ = 'reviews'

    id = Column(Integer, primary_key=True)
    review_id = Column('review_id', String, primary_key=True)
    resto_id = Column('resto_id', Integer, ForeignKey('restaurants.id'),
            nullable=True)
    url = Column('url', String),
    resto_name = Column('resto_name', String)
Run Code Online (Sandbox Code Playgroud)

我根据教程说明设置了alembic/env.py,将模型的元数据提供给target_metadata.

我跑的时候

$: alembic current
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:sqlalchemy.exc.InvalidRequestError:包含%(constraint_name)标记的命名约定要求明确命名约束.

在文档中,他们说"即使我们只使用Column.unique标志,这个相同的功能[使用命名约定生成列的名称]也会生效:" 1,所以我认为应该没有问题(他们继续使用一个未命名的ForeignKey给出一个例子.

我是否需要返回并为所有约束提供明确的名称,或者是否有办法自动执行此操作?

python sqlalchemy alembic

11
推荐指数
3
解决办法
2224
查看次数

IOError:设备上没有剩余空间 - 哪个设备?

我正在将一个小文件(8.5 Mb)上传到烧瓶测试服务器.

文件完成上传后,服务器将报告:

    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/wtforms/form.py", 
        line 212, in __call__
    return type.__call__(cls, *args, **kwargs)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/flask_wtf/form.py", line 49, in __init__
        formdata = request.form
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/local.py", 
        line 338, in __getattr__
    return getattr(self._get_current_object(), name)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/utils.py", 
         line 71, in __get__
    value = self.func(obj)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/wrappers.py", 
         line 484, in form
    self._load_form_data()
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/flask/wrappers.py", 
        line 165, in _load_form_data
    RequestBase._load_form_data(self)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/wrappers.py", 
        line 356, in _load_form_data
    mimetype, content_length, options)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/formparser.py", 
        line 193, in parse
    content_length, options)
    File "/home/ubuntu/.virtualenvs/eco_app/lib/python2.7/site-packages/werkzeug/formparser.py",
        line 99, in wrapper
    return f(self, stream, …
Run Code Online (Sandbox Code Playgroud)

python werkzeug flask

7
推荐指数
3
解决办法
2万
查看次数

如何使用xlwings从Python调用Excel宏?

我已经阅读了xlwings 的API文档,并在解释器中使用了Workbook和Sheet对象,但我无法弄清楚如何从Python调用宏.

如何使用xlwings从Python调用Excel宏?

python excel vba excel-vba xlwings

7
推荐指数
2
解决办法
9893
查看次数

模块化灯具时,PyTest在具有多个测试文件的目录上失败

我正在使用Py.Test来测试Python Flask应用程序中的函数.

当我使用一个包含所有灯具和测试的"app_test.py"文件时,我测试通过了.现在我已将灯具拆分为自己的模块,并将测试分成不同的模块,每个模块都会导入我遇到的灯具模块.

如果我单独运行各个模块的测试,一切都经过精细: pytest tests/test_1.py,pytest tests/test_2.py,pytest tests/test_3.py等.然而麻烦的开始,如果我想用一个命令,如按顺序运行所有测试pytest tests.

我得到第一个测试通过模块,所有未来的模块报告错误:

AssertionError: A setup function was called after the first request was handled.  
This usually indicates a bug in the application where a module was not imported 
and decorators or other functionality was called too late.
E  To fix this make sure to import all your view modules, database models 
and everything related at a central place before the application starts 
serving requests.
Run Code Online (Sandbox Code Playgroud)

一个文件中的所有测试和装置看起来像这样: …

python unit-testing pytest flask python-3.x

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

成员资格测试结果与list和csv.reader不同

如果我检查列表的成员资格而不是csv.reader对象,我会得到不同的结果.以下使用unittest模块.

csv.reader测试会员资格

with open("file.tab", 'rb') as f:
    reader = csv.reader(f, delimiter='\t')
    self.assertTrue(['1', '2', '3', '4'] in reader)
    self.assertTrue(['2', '3', '4', '5'] in reader)
    self.assertTrue(['3', '4', '5', '6'] in reader)
Run Code Online (Sandbox Code Playgroud)

列出成员资格测试

with open("file.tab", 'rb') as f:
    reader = csv.reader(f, delimiter='\t')
    reader = [record for record in reader]
    self.assertTrue(['1', '2', '3', '4'] in reader)
    self.assertTrue(['2', '3', '4', '5'] in reader)
    self.assertTrue(['3', '4', '5', '6'] in reader)
Run Code Online (Sandbox Code Playgroud)

我知道file.tab包含我正在测试的三条记录的条目,但第三个断言在使用csv.reader时出现"False is true",并在使用列表时传递.

csv.reader是一个生成器; 该文档没有明确说,但因为我可能会耗尽它,我认为这意味着它是一台发电机.我的想法是这可能是原因,但以下测试只打印出真实的内容:

x = xrange(5)
for m in range(5):
    for n …
Run Code Online (Sandbox Code Playgroud)

python csv

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