小编Jus*_*ser的帖子

multiprocessing/psycopg2 TypeError:无法pickle _thread.RLock对象

我按照下面的代码在postgres数据库上实现并行选择查询:

https://tech.geoblink.com/2017/07/06/parallelizing-queries-in-postgresql-with-python/

我的基本问题是我有大约6k个需要执行的查询,我正在尝试优化这些选择查询的执行.最初它是一个where id in (...)包含所有6k谓词ID 的单个查询,但是我在运行它的机器上使用> 4GB的RAM遇到了查询问题,因此我决定将其拆分为6k个别查询,当同步保持时稳定的内存使用.然而,运行时间需要更长的时间,这对我的用例来说不是一个问题.即便如此,我也在尽量减少时间.

这就是我的代码:

class PostgresConnector(object):
    def __init__(self, db_url):
        self.db_url = db_url
        self.engine = self.init_connection()
        self.pool = self.init_pool()

    def init_pool(self):
        CPUS = multiprocessing.cpu_count()
        return multiprocessing.Pool(CPUS)

    def init_connection(self):
        LOGGER.info('Creating Postgres engine')
        return create_engine(self.db_url)

    def run_parallel_queries(self, queries):
        results = []
        try:
            for i in self.pool.imap_unordered(self.execute_parallel_query, queries):
                results.append(i)
        except Exception as exception:
            LOGGER.error('Error whilst executing %s queries in parallel: %s', len(queries), exception)
            raise
        finally:
            self.pool.close()
            self.pool.join()

        LOGGER.info('Parallel query ran producing %s sets of results of type: …
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy psycopg2 python-multiprocessing

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

英国邮政编码正则表达

我希望能够验证英国邮政编码,理想情况下,我希望通过以下案例:

  1. W1
  2. W12
  3. WC1
  4. WC1A
  5. WC12
  6. W1 6BT
  7. W12 6BT
  8. WC1 6BT
  9. WC1A 6BT
  10. WC12 6BT
  11. W16BT
  12. W126BT
  13. WC16BT
  14. WC1A6BT
  15. WC126BT

我有以下正则表达式模式:

^(GIR 0AA)|(((A[BL]|B[ABDHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?[0-9]|((E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(SW|W)([2-9]|[1-9][0-9])|EC[1-9][0-9])( [0-9][ABD-HJLNP-UW-Z]{2})?)$
Run Code Online (Sandbox Code Playgroud)

此模式允许使用3或4和6或7位数的邮政编码(因此,只有3或4位数的外向代码,或6或7位数的完整邮政编码),但它不允许使用第4和第6点(空格包含的邮政编码)被省略了)

我也有这种模式:

^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKPS-UW]) {0,1}[0-9][ABD-HJLNP-UW-Z]{2})$
Run Code Online (Sandbox Code Playgroud)

这种模式允许6或7位数的邮政编码,我们没有空格,但不适用于不完整的邮政编码(仅限外向代码)

很抱歉在这里已经提到了一个已经广泛涵盖的问题,但是我找到的所有例子都符合我的要求,但不是全部.

理想情况下,我想要一个正则表达式模式,允许3,4,6和7位数的邮政编码,我们没有空格.

更新:

我已经完成了我的通过案件,因为我认为它最初并不完全全面.其基本概念应遵循英国邮政编码模式,并验证以下任何组合:

1 Letter 1 Number
1 Letter 2 Numbers
2 Letters 1 Number
2 Letters 1 Number 1 Letter
2 Letters 2 Numbers
1 Letter 1 Number (OptionalSpace) 1 Number 2 Letters
1 Letter 2 Numbers (OptionalSpace) 1 Number 2 Letters
2 Letters 1 Number (OptionalSpace) …
Run Code Online (Sandbox Code Playgroud)

c# regex postal-code

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

在 Visual Studio 2012 中使用 EF 脚手架创建新的 Web API 控制器时出现“未将对象引用设置为对象的实例”

我有一个 MVC4/Web API 项目,带有实体框架、代码优先数据模型。当我尝试使用数据上下文和模型创建具有读/写方法的新 API 控制器时,我收到一条警告,提示“对象引用未设置到对象的实例”。

我做了一些搜索,发现一些原因是 .csproj 文件中的项目类型 Guids 不正确、MvcScaffolding nuget 包的安装不完整以及安装 Powershell 3 的一个建议。

我已经确保我所有的项目类型 guid 都是正确的,确保正确安装了 MvcScaffolding 包,我什至安装了 Powershell 3。

这些都没有解决我的问题。我能想到的只是我的数据上下文/模型有问题,尽管它创建的表/关系很好。代码如下:

语境:

public class PropertySearchContext : DbContext 
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Property>().HasRequired(p => p.Office).WithMany(o => o.Properties).HasForeignKey(p => p.OfficeId);
    }

    public DbSet<Office> Offices { get; set; }
    public DbSet<Property> Properties { get; set; } 
}
Run Code Online (Sandbox Code Playgroud)

模型:

[Serializable]
public class Property
{
    public int PropertyId { get; set; }
    public string Address1 { get; set; } …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first asp.net-mvc-4 asp.net-web-api visual-studio-2012

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