我很可能不理解问题空间,但我很难搞清楚MEF(编辑器分类器项目).
我已经创建(将MSDN中的演练指南https://msdn.microsoft.com/en-us/library/ee197665.aspx拼凑在一起),这是Informix存储过程语言的语法高清.
我遇到的一个主要问题是 - 我希望能够找到关键字"DEFINE"的所有实例,并将其后面的单词直接填充到我所拥有的语句完成扩展中(目前它是从定义的单词列表中填充的).
与C#的本机支持非常相似 - 当您定义变量时,它在自动完成下拉列表中可用.
我摆脱了课堂上的硬编码(从演练中),我的完成单词定义如下:
List<Completion> completions = new List<Completion>();
CompletionTags completionTags = new CompletionTags();
foreach (string completionTag in completionTags.completionTags)
{
completions.Add(new Completion(completionTag));
};
Run Code Online (Sandbox Code Playgroud)
我的CompletionTags类非常简单:
class CompletionTags {public List completionTags;
public CompletionTags()
{
this.completionTags = new List<string> {
// SQL keywords
"COUNT",
"FROM",
"HAVING",
};
}
Run Code Online (Sandbox Code Playgroud)
我知道我需要做什么.我以某种方式需要在缓冲区更改时劫持缓冲区并找到所有出现的'DEFINE([a-zA-Z0-9 _] {1,})'并将\ 1添加到completionTags列表中.
我不知道怎么做.此时在任何方向(或任何方向)的任何指针都将非常感激.
善待 - 我们在某个阶段都已经超出了我们的深度(我已经用C#编程了3天)...
我的模型非常复杂,我正在尝试从现有存储过程中获取逻辑并将它们转换为SQLAlchemy(出于可移植性的原因).
我对未提交的数据感到困惑.
我有user表:1d,名字我有status表:id,名字我有user_statuses表:id,user_id,status_id,from_dt,to_dt
现在,我需要在单个事务中填充所有这些表,否则会失败.问题:
user = User(name = 'Test')
status = Status(name = 'Active')
db.session.add(user)
db.session.add(status)
# Oooopa! This is where it fails
user_session = UserStatuses(user_id=user.id, status_id=status.id, datetime.utcnow(), datetime(9999,01,01,00,00,00))
# both user.id and status.id = None as it's uncommited!
Run Code Online (Sandbox Code Playgroud)
本质上,我需要能够访问没有显式SQL的表序列.为什么?为了便携性.目前我使用PGSQL并且可以这样做:
class User(Base):
....
@staticmethod
def prefetch_id():
db.session.execute("SELECT NEXTVAL('user_id_seq');").scalar()
Run Code Online (Sandbox Code Playgroud)
将引擎更改为MySQL&BANG!申请破了.
关于如何做到这一点的任何想法?请记住,这可能是一个非常高的交易应用程序,一次被成千上万的用户访问
所有,
我正在研究SQLAlchemy的Audit mixin,但不确定如何执行此操作。我的课看起来像这样:
class AuditColumns(object):
created_dt = Column(DateTime,
default=datetime.utcnow(),
nullable=False)
created_by = Column(String(64),
default=current_user,
nullable=False)
updated_dt = Column(DateTime,
default=datetime.utcnow(),
nullable=False,
onupdate=datetime.utcnow())
updated_by = Column(String(64),
default=current_user,
nullable=False,
onupdate=current_user)
Run Code Online (Sandbox Code Playgroud)
更新的更新很好,因为我只需要在表级别记录最新更新;任何重要的审核将保存在单独的表格中,其中详细说明了更新/删除等。
我的问题是;我不希望created_dt / by列被更新。我知道,在我的代码中,我可以在更新对象时简单地忽略它们;但另一位编码员可以;因此,我真的想确保在每次更新之前,它都会覆盖自身的值,或者如果有人尝试更改它,则会引发错误(首选后者)。
我的SQLAlchemy技能仍在开发中,请问事件是否可以解决?还是可以通过重写一些通用的声明性功能(例如save()或before_save()或任何可能存在的东西)来完成?
我会一直在寻找答案-但最好能找到解决方案(我不希望获得代码)。
我正在开发一个项目,需要对每个创建的模型进行通用定制.我迄今为止完成大部分工作的方式是通过模型继承.这是我的代码块,可以让您更好地了解:
app.core.dba.mixins:
class AuditExtension(MapperExtension):
"""
AuditExtension enforces the audit column values, and ensures any interaction with
SQLAlchemy cannot override the values
"""
def before_insert(self, mapper, connection, instance):
instance.created_dt = datetime.utcnow()
instance.created_by = audit_session_user()
instance.updated_dt = datetime.utcnow()
instance.updated_by = audit_session_user()
def before_update(self, mapper, connection, instance):
# Never update the created columns
instance.created_dt = instance.created_dt
instance.created_by = instance.created_by
instance.updated_dt = datetime.utcnow()
instance.updated_by = audit_session_user()
class AuditColumns(object):
""" Generate the column schema for simple table level auditing. """
created_dt = Column(DateTime,
default=datetime.utcnow(),
nullable=False) …Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的问题,我无法解决。詹金斯正在从存储库进行构建。
它检查应用程序的当前提交(这是正确的),然后初始化子模块(也是正确的,并找到正确的提交)。
但当它尝试这样做时git submodule update --init --recursive repo,它会失败:
app/views/license/edit.html:需要合并
问题是没有冲突,并且当前提交的源中的文件完全没问题......
我只是不知道从这里该去哪里。
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url git@bitbucket.org:TEAM/api-backend.git # timeout=10
Fetching upstream changes from git@bitbucket.org:TEAM/api-backend.git
> git --version # timeout=10
using GIT_SSH to set credentials
> git fetch --tags --progress git@bitbucket.org:TEAM/api-backend.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse refs/remotes/origin/dev^{commit} # timeout=10
> git rev-parse refs/remotes/origin/refs/heads/dev^{commit} # timeout=10
Checking out Revision 99ab7742966fd82f21044e7bf5f405eaf3bd085b (refs/remotes/origin/dev)
> git config core.sparsecheckout # timeout=10
> git …Run Code Online (Sandbox Code Playgroud)