'Hello ' + 1 在Python 3.5和3.6上没有返回相同的错误消息:
TypeError: Can't convert 'int' object to str implicitlyTypeError: must be str, not int这是一个简单的措辞改变还是有更微妙的背后?
我有一个 Python 3 程序,它根据行的 id(在 Postgres 9.5 数据库中的表中)更新一个大的行列表。
我使用多处理来加速这个过程。由于 Psycopg 的连接不能跨进程共享,我为每一行创建一个连接,然后关闭它。
总体而言,多处理比单处理快(8 个 CPU 时快 5 倍)。但是,创建连接很慢:我只想创建几个连接,并在需要时保持打开状态。
由于 .map() 将 ids_list 切割成多个块并提交给进程池,是否可以为同一块/进程中的所有 id 共享数据库连接?
示例代码:
from multiprocessing import Pool
import psycopg2
def create_db_connection():
conn = psycopg2.connect(database=database,
user=user,
password=password,
host=host)
return conn
def my_function(item_id):
conn = create_db_connection()
# Other CPU-intensive operations are done here
cur = conn.cursor()
cur.execute("""
UPDATE table
SET
my_column = 1
WHERE id = %s;
""",
(item_id, ))
cur.close()
conn.commit()
if __name__ == '__main__':
ids_list = …Run Code Online (Sandbox Code Playgroud) 在Python 3中,我希望能够以re.sub()"不区分重音"的方式使用,因为我们可以使用re.I不区分大小写的替换标志.
可能是re.IGNOREACCENTS一面旗帜:
original_text = "¿It's 80°C, I'm drinking a café in a cafe with Chloë?"
accent_regex = r'a café'
re.sub(accent_regex, 'X', original_text, flags=re.IGNOREACCENTS)
Run Code Online (Sandbox Code Playgroud)
这将导致"¿它的温度为80°C,我正在用Chloë在X中饮用X."(请注意,"Chloë"仍然有一个重点而不是"¿它是80°C,我正在饮用X"与Chloë的咖啡馆."在真正的蟒蛇.
我认为这样的旗帜不存在.那么这样做的最佳选择是什么?使用re.finditer和unidecode两个original_text和accent_regex,然后通过分割字符串替换?或修改accent_regex其重音变体中的所有字符,例如:r'[cç][aàâ]f[éèêë]'?
python regex unicode non-ascii-characters accent-insensitive
要在查询中动态选择表名,我曾经使用AsIs()(psycopg2.extensionshttp://initd.org/psycopg/docs/extensions.html#psycopg2.extensions.AsIs ),语法如下:
cur.execute("SELECT * FROM %s WHERE id = %s;", (AsIs('table_name'), id))
Run Code Online (Sandbox Code Playgroud)
但是,文档现在建议使用psycopg2.sql2.7 版中提供的新模块 ( http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql ),语法如下:
from psycopg2 import sql
cur.execute(
sql.SQL("SELECT * FROM {} WHERE id = %s;")
.format(sql.Identifier('table_name')), (id, )
Run Code Online (Sandbox Code Playgroud)
sql除了模块公开的对象可以直接传递给 之外,这两个选项之间还有什么区别execute()?
python ×4
psycopg2 ×2
postgresql ×1
python-3.5 ×1
python-3.6 ×1
regex ×1
string ×1
typeerror ×1
unicode ×1