小编new*_*ver的帖子

MySQL多个连接在一个查询中?

我有以下查询:

SELECT
  dashboard_data.headline,
  dashboard_data.message,
  dashboard_messages.image_id 
FROM dashboard_data
INNER JOIN dashboard_messages
  ON dashboard_message_id = dashboard_messages.id
Run Code Online (Sandbox Code Playgroud)

所以我正在使用INNER JOIN并抓住了image_id.所以现在,我想把image_id images.filename从图像表中转换成.

如何将其添加到我的查询中?

mysql sql join

105
推荐指数
4
解决办法
33万
查看次数

一些内置的用于在python中填充列表

我有一个大小< N的列表,我想用一个值填充大小为N.

当然,我可以使用类似下面的东西,但我觉得应该有一些我错过的东西:

>>> N = 5
>>> a = [1]
>>> map(lambda x, y: y if x is None else x, a, ['']*N)
[1, '', '', '', '']
Run Code Online (Sandbox Code Playgroud)

python list list-manipulation

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

如何用python中的partial填充特定的位置参数?

基本上,我想做的是:

>>> from functools import partial
>>> partial(str.startswith, prefix='a')('a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: startswith() takes no keyword arguments
Run Code Online (Sandbox Code Playgroud)

但更普遍的问题是,如何用特定的位置参数填充partial.

PS我确实意识到我可以用一个lambda代替.

python

41
推荐指数
3
解决办法
9807
查看次数

Python:按所有空格字符拆分字符串

要在python中按空格分割字符串,通常使用split不带参数的字符串方法:

>>> 'a\tb c\nd'.split()
['a', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)

但是昨天我遇到了一个在单词之间使用ZERO WIDTH SPACE的字符串.将我的新知识转化为短暂的黑魔法表演(在JavaScript人员中),我想问一下如何更好地分割所有空白字符,因为这split还不够:

>>> u'a\u200bc d'.split()
[u'a\u200bc', u'd']
Run Code Online (Sandbox Code Playgroud)

UPD1

似乎sthgererally 建议的解决方案,但取决于一些操作系统设置或Python编译选项.很高兴知道确定的原因(如果可以在Windows中打开设置).

UPD2 cptphil发现了一个很好的链接,使一切都清晰:

所以我就此问题联系了Unicode技术委员会,并收到了回复后立即收到回复.他们指出,ZWSP曾经被认为是白色空间,但在Unicode 4.0.1中有所改变

来自unicode网站的报价:

将U + 200B零宽度空间从Zs改为Cf(2003.10.27)

使用U + 200B零宽度空间(ZWSP)时一直存在问题.该字符的功能是允许在通常不允许的位置处换行,因此在功能上是一般格式为Cf的格式字符.Unicode标准中详细记录了此行为,并且Unicode字符数据库中的字符不被视为空白字符.但是,由于历史原因,一般类别仍然是Zs(空间分隔符),这会导致角色被滥用.ZWSP也是唯一不是空白的Zs角色.一般类别可能导致对规则D13基本字符的误解,因为允许ZWSP作为组合标记的基础.

该提议是将U + 200B的一般类别从Zs改为Cf.

决议:已结束.在Unicode版本4.0.1中,U + 200B的常规类别将从Zs更改为Cf.

然后,这一变化反映在Python中.u'\u200B'.isspace()Python 2.5.4和2.6.5 的结果是True,在Python 2.7.1中已经存在False.

对于其他空间字符,常规split就足够了:

>>> u'a\u200Ac'.split()
[u'a', u'c']
Run Code Online (Sandbox Code Playgroud)

如果这还不够,请按照Gabi Purcaru下面的建议逐个添加字符.

python whitespace

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

字符串上的MySql,IFNULL(),COALSESCE()没有替换

描述:

我的陈述应该用'no name'替换每个空的 title_column ,但它不会:

SELECT
  COALESCE(main_table.title_column, 'no name') AS title
FROM main_table;
Run Code Online (Sandbox Code Playgroud)

IFNULL()的行为方式相同.

我究竟做错了什么 ?

mysql sql replace coalesce ifnull

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

Python-mysql:何时显式回滚事务

假设,我有一个修改声明:

cursor = conn.cursor()
# some code
affected_rows1 = cursor.execute(update_statement1, params1)
# some code
conn.commit()
cursor.close()
Run Code Online (Sandbox Code Playgroud)

我是否应该使用a包装代码块try ... except并在引发异常时显式回滚事务,以及应该捕获哪些MySQLdb异常?StandardError在这种情况下我常常捕获任何内容,但现在我犹豫不决,代码块甚至需要显式回滚.

以下示例稍微困难一点,我知道如果第一个更新语句成功,它确实需要显式回滚.在这种情况下,我应该抓住哪些例外:

cursor = conn.cursor()
# some code
affected_rows1 = cursor.execute(update_statement1, params1)
# some code
affected_rows2 = cursor.execute(update_statement2, params2)
#some code
conn.commit()
cursor.close()
Run Code Online (Sandbox Code Playgroud)

python mysql mysql-python

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

将Web应用程序部署到正在运行的Tomcat

我想收集一些关于将Web应用程序部署到正在运行的Tomcat的最佳实践.不久前,我不得不描述我们的网络应用程序的部署过程,这个过程显得比较混乱.

比如,我们在WAR文件(foo.war)中有一个应用程序正确配置,不需要额外的配置.在这种情况下,部署过程相当简单:

  • 将foo.war文件复制到$ CATALINA_HOME/webapps目录.如果应用程序正确启动,应用程序将自动部署到$ CATALINA_HOME/webapps/foo目录.

要取消部署应用程序:

  • 从$ CATALINA_HOME/webapps中删除foo.war文件.如果应用程序正确卸载,它将被卸载并且$ CATALINA_HOME/webapps/foo将被删除.

现在我想在我正在运行的应用程序中覆盖一些上下文参数.阅读完文档后,我需要做的就是:

  1. 创建名为foo.xml的context.xml文件
  2. 将文件复制到$ CATALINA_BASE/conf/[enginename]/[hostname] /目录.

不幸的是,这不起作用:应用程序不会重新启动.根据经验,我们发现唯一可行的解​​决方案是将war文件部署到$ CATALINA_HOME/webapps之外的位置.此外,应该在web.xml中指定WAR文件中可配置上下文参数的默认值,因为当外部有context.xml时,不会读取WAR文件中的context.xml.

这是foo.xml的一个简单示例:

<?xml version='1.0' encoding='utf-8'?>                           
<Context docBase="/path-to-deployment-directory/foo.war">
    <Parameter name="myparam" value="newvalue" override="false"/>
</Context>
Run Code Online (Sandbox Code Playgroud)

如果希望'newvalue'覆盖WAR的web.xml中指定的值,请确保为参数指定override = false.这对我们来说并不明显.

因此,要将应用程序部署到正在运行的Tomcat:

  1. 创建名为foo.xml的context.xml文件
  2. 将文件复制到$ CATALINA_BASE/conf/[enginename]/[hostname] /目录.
  3. 将foo.war复制到foo.xml的docBase中指定的位置; 应用程序将自动部署.

要应用新的上下文参数:

  • 将参数值添加到foo.xml并保存文件; 应用程序将自动重新部署.

要取消部署应用程序:

  • 从$ CATALINA_BASE/conf/[enginename]/[hostname] /目录中删除foo.xml

请注意,删除foo.war也可以,但也会删除foo.xml.


到现在为止,我有以下问题:

  1. 在不停止tomcat的情况下部署Web应用程序是否是最佳实践?我听说有人认为永远不需要部署到正在运行的tomcat,因为人们在一个单独的tomcat中运行每个应用程序.
  2. 将WAR文件复制到$ CATALINA_HOME/webapps是一个好主意,还是最好将它们保存在一个单独的位置?
  3. 如何配置部署到$ CATALINA_HOME/webapps的应用程序
  4. 为什么catalina.out中没有用于部署应用程序的INFO行,还有一个用于取消部署?它是可配置的吗?

deployment configuration tomcat servlets

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

为什么Python的DB-API中的连接没有"开始"操作?

使用mysql-python中的游标我曾经称之为"BEGIN;","COMMIT;"和"ROLLBACK;" 明确如下:

try:
    cursor.execute("BEGIN;")
    # some statements
    cursor.execute("COMMIT;")
except:
    cursor.execute("ROLLBACK;")
Run Code Online (Sandbox Code Playgroud)

然后,我发现底层连接对象有相应的方法:

try:
    cursor.connection.begin()
    # some statements
    cursor.connection.commit()
except:
    cursor.connection.rollback()
Run Code Online (Sandbox Code Playgroud)

检查DB-API PEP我发现它没有提到连接对象的begin()方法,即使对于扩展也是如此.

顺便说一下,当您使用该方法时,Mysql-python会抛出DeprecationWarning.例如,sqlite3.connection根本就没有这个方法.

问题是为什么PEP中没有这样的方法?该语句是否可选,是否足以调用commit()?

python sql python-db-api

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

xsl中的变量:模板匹配模式

特定

带有全局变量的XSLT样式表:

<xsl:variable name="lang" select="/response/str[@name='lang']"/>
Run Code Online (Sandbox Code Playgroud)

从何而来,在谓词中使用变量的限制在xsl:template匹配模式中是不正确的,但在xsl:apply-templates选择模式时是否可以接受?

<!-- throws compilation error, at least in libxslt --> 
<xsl:template match="list[@name='item_list'][$lang]"/>

<!-- works as expected --> 
<xsl:template match="list[@name='item_list'][/response/str[@name='lang']]"/>

<!-- works as expected --> 
<xsl:template match="response">
    <xsl:apply-templates select="list[@name='item_list'][$lang]">
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

xslt

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

Python unicode规范化:将u'\ xb4'翻译为u'\ u0301'是否正确

看下面的代码片段:

>>> import unicodedata
>>> from unicodedata import normalize, name

>>> normalize('NFKD', u'\xb4')
u' \u0301'

>>> normalize('NFKD', u'a\xb4a')
u'a \u0301a'

>>> normalize('NFKC', u'a\xb4a')
u'a \u0301a'

>>> name(u'\xb4'), name(u'\u0301')
('ACUTE ACCENT', 'COMBINING ACUTE ACCENT')
Run Code Online (Sandbox Code Playgroud)

我想了解,如果行为翻译u'\xb4'u' \u0301'是正确的.为什么它将结合的重音与空间相结合?为什么它会翻译你\xb4呢?

fileformat,我们看到ACUTE ACCENT用于调用SPACING ACUTE.我想,这只是意味着光标应该移动而不是等待输入以下字符.

UPD:如果有人感兴趣,这里有一个列表,如果NFKC规范化后的unicode字符在开头有空格:http://pastebin.com/Z99r5AK9

python unicode

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