我按照下面的代码在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
我希望能够验证英国邮政编码,理想情况下,我希望通过以下案例:
我有以下正则表达式模式:
^(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) 我有一个 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