我想将我的sigle-thread应用程序分成多个工作线程.只有一个问题 - 这个动作的表现怎么样?如果GIL阻止python当时执行多个线程,我会获得任何利润吗?
另一点(从c/c ++的角度来看) - 因为我知道每个线程,无论如何,只能执行,所以在比python解释器更低的层次我有相同的限制.
简介:python线程在部分任务切换中是否具有"本机"线程的效率较低?
我有这样的模型:
class MyModel(models.Model):
user = models.ForeignKey(User)
field1 = models.CharField(max_length=100, db_index=True, null=False, blank=False)
field2 = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)
当然,它显示为如下列表:
user1 | field1 | field2
user1 | field1 | field2
user2 | field1 | field2
user2 | field1 | field2
Run Code Online (Sandbox Code Playgroud)
我想像这样展示它:
user1 | field1_count() | field2_count()
user2 | field1_count() | field2_count()
Run Code Online (Sandbox Code Playgroud)
我知道如何为用户计算 field1_count() 和 field2_count(),但是如何为每个用户只保留一行?
我想将XML字段"拆分"到多列数据集.XML看起来像:
<simple>
<propertyid>
<value>p1</value>
<value>p2</value>
<value>p3</value>
<value>p4</value>
</propertyid>
<complexid>
<value>c1</value>
<value>c2</value>
<value>c3</value>
</complexid>
</simple>
Run Code Online (Sandbox Code Playgroud)
我尝试做类似的事情(每次我在TSQL中使用XML时都感觉像是butthurt,所以我的代码错了):
;WITH source AS (
SELECT CAST(@xmlstring AS XML) AS x
)
SELECT
items.item.query('.')
FROM source
CROSS APPLY x.nodes('/simple/*/value') AS items(item)
Run Code Online (Sandbox Code Playgroud)
预期数据集:
ColumnName Value
------------------------
propertyid p1
propertyid p2
propertyid p3
propertyid p4
complexid c1
complexid c2
complexid c3
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到所需的结果?也许你可以推荐使用T-SQL + XML + XQuery解释和样本的好资源?
我试图了解如何使用__all. 例如,我有以下结构化代码:
main.py
|=> /database
|=> __init__.py
|=> engine (with variables engine, session, etc.)
Run Code Online (Sandbox Code Playgroud)
现在我希望能够直接从模块导入实例,session例如:enginedatabase
from database import session
Run Code Online (Sandbox Code Playgroud)
我尝试添加行__all__ = ['session']或__all__ = ['engine.session']到__init__py,但当我尝试导入时出现异常AttributeError: 'modile' object has not attribute 'engine.session'。
有什么办法可以实现想要的行为吗?
我在通过管理站点向sqlite数据库添加新记录时遇到了Unicode字符串问题.
class Translation(BaseModel):
.....
translation = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)
当我尝试插入像'été'这样的单词时会发生错误:
**UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 0: ordinal not in range(128)**
Run Code Online (Sandbox Code Playgroud)
更新:添加了回溯:http://pastebin.com/yLYFNDGB
我有类层次结构,如下所示:
class BaseType
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[DataType(DataType.Text)]
[StringLength(100)]
public string CreatedBy { get; set; }
[DataType(DataType.DateTime)]
public DateTime? CreatedDate { get; set; }
....
}
class Group : BaseType
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是OnModelCreating方法的上下文:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<MCQGroup>()
.HasKey(t0 => t0.Id)
.Map(m => m.ToTable("groups"))
.HasMany(t1 => t1.Sections)
.WithMany(t2 => t2.Groups)
.Map(m =>
m.MapLeftKey("group_id")
.MapRightKey("section_id")
.ToTable("groups_to_sections"));
...........
}
Run Code Online (Sandbox Code Playgroud)
我没有使用自动表格生成或迁移.相反,我有许多脚本来创建数据库(实际上,我在第一次运行时使用自动生成,之后脚本创建的表包括webdata_*表).这是由多个上下文引起的,在这种情况下,表自动生成存在许多问题.
这是SQL脚本:
-- Tables creation
CREATE TABLE [groups] …Run Code Online (Sandbox Code Playgroud) 我有以下应用程序结构:
run.py
|->app
|->models
|-> user.py (declares role-to-user relationship table and User model)
|-> role.py (declares Role model)
|-> main.py (contains initialization and all required imports)
|-> extensions (here sqlalchemy variable declared to be imported later)
Run Code Online (Sandbox Code Playgroud)
当我尝试以下方式创建初始数据库结构时:
from app.models import *
from app.extensions import db
from app.main import myapp #app is initialized with all packages like assets, db, security, etc.
with myapp.test_request_context():
db.create_all()
Run Code Online (Sandbox Code Playgroud)
我有一个例外:NoReferencedTableError:与列“users_to_roles.user_id”关联的外键找不到用于生成目标列“id”的外键的表“users”
我也尝试按照以下方式进行操作:
@app.before_first_request
def initialize_database():
db.create_all()
Run Code Online (Sandbox Code Playgroud)
没有成功
我尝试移动Role到声明模型的同一文件,User并得到相同的结果。我在这里阅读了文档: https: //pythonhosted.org/Flask-SQLAlchemy/quickstart.html但它说“你只需要导入db”并且它不起作用。 …
我有基本的Flask应用程序Parent和Child类似的模型:
class Parent(db.Model):
__tablename__ = 'parents'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
class Child(db.Model):
__tablename__ = 'children'
id = db.Column(db.Integer, primary_key=True)
parent_id = db.Column(db.Integer, db.ForeignKey('parents.id'), nullable=False)
parent = db.relationship('Parent', backref=db.backref('children', cascade='all,delete'))
name = db.Column(db.String)
Run Code Online (Sandbox Code Playgroud)
作为数据库我正在使用Postgres,如果它很重要.现在我想做以下操作:cascade='all,delete'从子项中删除并使其可以为parent_id空.即Parent从数据库Child中删除时保留到位parent_id == NULL.
我知道我可以使用模式创建脚本为FK添加约束来指定它.但我只想将其标记为NULL并允许SqlAlchemy控制孩子的FK无效.
我有几个片段是共享的js,jsx和html文件。现在,我在3个文件中具有相同的代码段代码。是否可以创建代码片段并指定适用于哪些文件/类型?
我有一个小问题:简单的类
class AModel(db.Model):
id = db.Column(....)
title = db.Column(....)
uniq_text_id = db.Column(db.String(50), unique=True. nullable=False)
def __init__(self):
uniq_text_id = uuid4().hex
Run Code Online (Sandbox Code Playgroud)
现在我调整了flask-admin 包以及管理员能够创建AModel实例的权限。但有 1 种情况:uniq_text_id必须自动创建字段。
所以,现在我无法创建模式,因为flask-admin 说需要fiel uniq_text_id,但也没有显示预填充的值。
有没有办法在flask-admin 表单中使用预填充的值,或者在不放弃nullable=False约束的情况下以某种方式避免这个问题?
UPD: @codegeek 为仍显示在表单上的自动生成字段提供了很好的解决方案。我自己的解决方案使用由flask-admin 功能提供,允许显式声明显示哪些列以及隐藏哪些列。
python ×5
django ×2
flask ×2
dbcontext ×1
django-admin ×1
gil ×1
identity ×1
module ×1
postgresql ×1
sqlalchemy ×1
t-sql ×1
unicode ×1
xml ×1
xquery ×1