小编Chr*_*lly的帖子

高数值精度浮动MySQL和SQLAlchemy ORM

我使用SQLAlchemy的ORM在MySQL中存储了一些数字.当我之后获取它们时,它们被截断,只保留6个有效数字,因此在我的浮点数上失去了很多精度.我想有一个简单的方法可以解决这个问题,但我找不到如何.例如,以下代码:

import sqlalchemy as sa
from sqlalchemy.pool import QueuePool
import sqlalchemy.ext.declarative as sad

Base    = sad.declarative_base()
Session = sa.orm.scoped_session(sa.orm.sessionmaker())

class Test(Base): 
    __tablename__   = "test"
    __table_args__  = {'mysql_engine':'InnoDB'}
    no      = sa.Column(sa.Integer, primary_key=True)
    x       = sa.Column(sa.Float)


a = 43210.123456789
b = 43210.0
print a, b, a - b

dbEngine = sa.create_engine("mysql://chore:BlockWork33!@localhost", poolclass=QueuePool, pool_size=20,  
                                 pool_timeout=180)              
Session.configure(bind=dbEngine)   
session = Session()            

dbEngine.execute("CREATE DATABASE IF NOT EXISTS test")
dbEngine.execute("USE test")  
Base.metadata.create_all(dbEngine)   

try:
    session.add_all([Test(x=a), Test(x=b)])
    session.commit()
except:
    session.rollback()
    raise

[(a,), (b,)] = session.query(Test.x).all()
print a, b, a …
Run Code Online (Sandbox Code Playgroud)

python mysql orm sqlalchemy floating-accuracy

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

无法获得visual studio C++包含文件'excpt.h'来安装

我正在尝试编译Visual Studio C++项目,因为编译器报告"无法打开包含文件:'excpt.h':没有这样的文件或目录",我无法到达任何地方.这个问题已在互联网上多次报道,但我找不到任何关于我的具体情况的帮助.问题不在于项目的包含路径没有正确设置,问题是我的计算机中只缺少这个包含文件(可能还有一堆其他文件).我的硬盘上没有这样的文件.所以我尝试安装Windows SDK 7.1.该文件不在已安装的SDK中(尽管它应该是).我尝试修复安装,卸载它,重新安装它......所有的时间都很多.我还尝试安装,修复,卸载,重新安装Visual Studio 2010专业版,无论是否安装了Windows SDK.我甚至尝试卸载专业版来安装快速VC++ ......似乎没什么用,没有'excpt.h'永远不会安装在我的电脑上.我无能为力......有人有一丝解决方案吗?我在Windows 7上.

作为补充信息,请注意"excpt.h"包含在"windows.h"中.此外,"excpt.h"文件通常与Windows SDK一起安装在"c:\ program files(x86)\ microsoft sdks\windows\v7.1\include \"之类的路径下,并且在Visual Studio下的路径下安装"C:\ Program Files\Microsoft Visual Studio 10.0\VC\include \".

编辑:如果它可能会有所帮助,我可能会添加文件夹C:\ Program Files\Microsoft Visual Studio 10.0\VC\include相关我的Visual Studio安装只有两个文件...这当然不正常!!! 但是,我找不到任何方法让安装程序安装应出现在此库中的所有.h文件.

c++ windows compiler-errors visual-studio

8
推荐指数
1
解决办法
2万
查看次数

从代码中调用点击命令

我有一个函数,使用click打包为命令。所以看起来像这样:

@click.command()
@click.option('-w', '--width', type=int, help="Some helping message", default=0)
[... some other options ...]
def app(width, [... some other option arguments...]):
    [... function code...]
Run Code Online (Sandbox Code Playgroud)

我对此功能有不同的用例。有时,可以通过命令行调用它,但是有时候我也想直接调用该函数

from file_name import app
width = 45
app(45, [... other arguments ...]) 
Run Code Online (Sandbox Code Playgroud)

我们该怎么做?我们如何使用click调用已包装为命令的函数?我找到了这篇相关的文章,但是我不清楚如何使它适应我的情况(即,从头开始构建Context类并在click命令功能之外使用它)。

编辑:我应该提到:我不能(轻松)修改包含要调用的函数的程序包。因此,我正在寻找的解决方案是如何从呼叫方进行处理。

python command-line-interface python-click

8
推荐指数
4
解决办法
1681
查看次数

使用C++ boost :: split拆分字符串而不拆分引用文本

我在用

boost::split(strs, r_strCommandLine, boost::is_any_of("\t "));
Run Code Online (Sandbox Code Playgroud)

将字符串吐入标记以解析简单脚本.到现在为止还挺好.但是,对于以下字符串

command_name first_argument "Second argument which is a quoted string." 
Run Code Online (Sandbox Code Playgroud)

我想要我的代币

strs[0] = command_name
strs[1] = first_argument
strs[2] = "Second argument which is a quoted string." 
Run Code Online (Sandbox Code Playgroud)

当然,我可以在标记的开头和结尾搜索引号字符,并使用""分隔符合并标记以引号开头的事件和以引号结束的标记之间的标记,以重新创建引用的字符串,但我想知道如果有一种更有效/更优雅的方式来做到这一点.有任何想法吗?

c++ boost split

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

在 ipython 笔记本的 Markdown 单元格中显示 Python 执行结果

我有生成复杂表达式的 SymPy 代码,我想在 Markdown 单元格中显示这些表达式以讨论结果。一般来说,我做

print sympy.latex(an_expression_i_want_to_display)
Run Code Online (Sandbox Code Playgroud)

在代码单元格中,我将结果复制并粘贴到我的 Markdown 单元格中的 $$ 标记之间。当然,这并不好,因为如果代码中的内容发生变化并且乳胶表达式发生变化,它不会在 Markdown 单元格中自动更新。手动更新它很麻烦,并且容易出错。所以,我想知道是否有一种用户友好的方式在 Markdown 单元格中执行代码并显示其输出。例如,让我们假设符号@@ 之间的任何内容都被执行并显示其内容。例如,我们可以简单地编写一个 Markdown 单元格,例如:

The outcome of blablabla is $@print sympy.latex(an_expression_i_want_to_display)@$.
Run Code Online (Sandbox Code Playgroud)

它会转化为

The outcome of blablabla is $x + \omega$.
Run Code Online (Sandbox Code Playgroud)

它会显示为

The outcome of blablabla is x + ?.
Run Code Online (Sandbox Code Playgroud)

所以问题是,获得此类行为的最简单方法是什么(对用户更友好、更高效)?

python markdown sympy ipython

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