标签: peewee

Peewee:如何选择 id 与列表匹配的多行?

list_of_ids = "23,55,11,24"
job = Job.select().join(User).where(Job.id IN (list_of_ids))
Run Code Online (Sandbox Code Playgroud)

我想获取属于特定用户的所有作业,其中作业 ID 与list of ids提供的匹配。但是,我不断收到语法错误,并且在 Peewee 网站上找不到任何相关文档。

我希望能够在提供的 ID 列表上执行更新和删除操作。

如果 Peewee 能让我插入一个 SQL 字符串就好了。我只会做

SELECT job.name FROM user INNER JOIN job ON user.id = job.id 
WHERE job.id IN (23,55,11,24)
Run Code Online (Sandbox Code Playgroud)

python sqlite peewee

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

Python - peewee - 调试语句 - 记录的错误在哪里

我刚刚开始在python中使用peewee。但是当我使用 .save() 函数保存表数据时。线路中有错误。并且控制不会转到下一行。

只是想知道如何知道错误是什么。虽然我已经缩小到下面的行

     try:
        with database.transaction():
            driver = Driver()
            driver.person = person
            driver.qualification = form.getvalue('qualification')
            driver.number = form.getvalue('phone')
            driver.license = form.getvalue('issu')
            driver.audited_by = 0
            print "this line prints"
            driver.save()
            print "this one does not print"
            print "Success"

    except:
        print "Error"
Run Code Online (Sandbox Code Playgroud)

我使用了打印语句,我能够找出 driver.save() 行中的错误。但是如何检查错误究竟是什么?

python mysql try-catch peewee

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

Peewee、SQLite 和线程

我正在开发一个线程应用程序,其中一个线程将提供Queue要修改的对象,然后许多其他线程将从队列中读取,进行修改并保存更改。

该应用程序不需要很多并发,所以我想坚持使用 SQLite 数据库。这是一个说明该应用程序的小示例:

import queue
import threading
import peewee as pw

db = pw.SqliteDatabase('test.db', threadlocals=True)

class Container(pw.Model):
    contents = pw.CharField(default="spam")

    class Meta:
        database = db


class FeederThread(threading.Thread):

    def __init__(self, input_queue):
        super().__init__()

        self.q = input_queue

    def run(self):
        containers = Container.select()

        for container in containers:
            self.q.put(container)


class ReaderThread(threading.Thread):

    def __init__(self, input_queue):
        super().__init__()

        self.q = input_queue

    def run(self):
        while True:
            item = self.q.get()

            with db.execution_context() as ctx:
                # Get a new connection to the container object:
                container = Container.get(id=item.id)
                container.contents …
Run Code Online (Sandbox Code Playgroud)

python sqlite multithreading peewee

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

peewee 自定义字段 - 定义允许的值

两种情况:

1.) 我想定义一个只能取整数 0、1 或 2 的属性 (val)。

class Trinary(Model):
    """val should accept the values 0, 1 or 2 only"""
    val = IntegerField()
Run Code Online (Sandbox Code Playgroud)

2.) 我想定义一个只能接受特定字符串的属性 (val),例如 ["strawberry", "peach", "apple"]

class Fruit(Model):
    """val should accept the values "strawberry", "peach" or "apple" only """
    val = ???
Run Code Online (Sandbox Code Playgroud)

是否可以使用 peewee 实现这样的限制?

谢谢你的帮助!

莫夫

python python-3.x peewee

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

与 python 和 peewee 相同的默认值

我打算用 PeeWee 进行测试,我发现了一个大问题。例子 :

from uuid import uuid4
import datetime as dt
import time
from peewee import *

dbfile = 'test.db'
db = SqliteDatabase(dbfile)

class BaseModel(Model):
    class Meta:
        database = db

class Example(BaseModel):
    uuid = CharField(default=str(uuid4()))
    date = DateTimeField(default=dt.datetime.now())

try:
    Example.create_table()
except:
    pass
e1 = Example.create()
time.sleep(1)
e2 = Example.create()
print(e1.uuid, e2.uuid) #Same uuid...
print(e1.date, e2.date) #Same date
Run Code Online (Sandbox Code Playgroud)

在这段代码中,uuid 和 date 是相同的,这是不正常的。为什么以及如何将其更改为每个新创作的不同价值?

谢谢

python python-3.x peewee

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

检查表中是否存在列

对于上下文:我正在编写一个脚本来进行数据库迁移。

想要根据实际表检查模型以查看所有字段是否存在。

或者想要检查表中是否存在特定列(字段)。

我可以看到http://docs.peewee-orm.com/en/latest/peewee/api.html#Model.table_exists存在,所以我正在寻找字段的推论。

提前致谢!

peewee

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

Peewee - 如何执行原始查询并将其映射到字典?

我一直在尝试执行原始查询并将其映射到字典。

虽然execute_sql不返回列名,但返回元组。

我使用原始查询,但它返回 None Abc 实例

class Abc(BaseModel):
    name = CharField()
    engine = CharField()

q = Abc.raw('show table status from ' + config.DB['name'])
print(list(q.execute()))
Run Code Online (Sandbox Code Playgroud)

输出:

[<Abc: None>, <Abc: None>, <Abc: None>, <Abc: None>, <Abc: None>, <Abc: None>, <Abc: None>, <Abc: None>, <Abc: None>, <Abc: None>, <Abc: None>, <Abc: None>, <Abc: None>, <Abc: None>, <Abc: None>]
Run Code Online (Sandbox Code Playgroud)

sql的结果

在此输入图像描述

python mysql peewee

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

peewee vs django进行数据库处理

使用mysql(newbie)处理python和Django项目试图弄清楚是否更喜欢在Django表单中的python数据库部分和Django模型中使用peewee,或者继续使用Django进行整个事情

相关答案声称Django开销很高但无法找到该假设的基础

谢谢,西蒙

python mysql django peewee

0
推荐指数
1
解决办法
2221
查看次数

在不使用 `atomic()` 的情况下使用带有 peewee 的事务

我们有一个db.py定义了 peewee 数据库的文件:

db = PostgresqlExtDatabase('mom',
                           user=DB_CONFIG['username'],
                           password=DB_CONFIG['password'],
                           host=DB_CONFIG['host'],
                           port=DB_CONFIG['port'],
                           threadlocals=True,
                           register_hstore=False,
                           autocommit=True,
                           autorollback=True,
                           cursor_factory=DictCursor)
Run Code Online (Sandbox Code Playgroud)

调用db.execute("SOME RAW SQL UPDATE QUERY")按预期工作。但是begin在此之前调用 a并不会阻止数据库被修改。

db.begin()
db.execute("SOME RAW SQL UPDATE QUERY")  # <- Does not wait, db is updated immediately here
db.commit()
Run Code Online (Sandbox Code Playgroud)

我这样做对吗?

如果一个事务已经在进行中,我基本上需要将原始 sql 嵌套在一个事务中,否则如果没有begin调用任何事务,则立即执行它。

这工作,如果我做的预期db.set_autocommit(False),然后execute_sqlcommit()
它也适用于atomic()上下文管理器。


给予一定的情况下,我工作的一个Web应用程序,物流,和我们的代码库使用瓶和SQLAlchemy的scoped_session使用autocommit设置为true。它不使用SQLAlchemy的ORM(因为..历史原因),而是只使用Session对象和它的 execute()begin()begin_nested()rollback()remove()方法。

它的实现方式是Session = …

python session sqlalchemy peewee

0
推荐指数
1
解决办法
3298
查看次数

在 Peewee Models Python 中创建“查询方法”

我在烧瓶项目中使用 Peewee 进行 MySQL 连接。我想知道是否可以在模型的方法中进行查询。这将使路由代码更清晰,例如:

人物.py:

from peewee import *

db = SqliteDatabase('people.db')

class Person(Model):
    name = CharField()
    birthday = DateField()
    is_relative = BooleanField()

    class Meta:
        database = db # This model uses the "people.db" database.

    def getPersonByName(name):
        #logic to get persons by name
        #return result
Run Code Online (Sandbox Code Playgroud)

服务器.py:

 .
 .
 .
 @app.route('/<name>')
 def index(name):
     persons = Person.getPersonByName(name)
     return render_template('names.html', persons=persons)
Run Code Online (Sandbox Code Playgroud)

python flask peewee

0
推荐指数
1
解决办法
751
查看次数

Flask peewee AttributeError:“ModelSelect”对象没有属性“_meta”

我有一个非常简单的设置、pipenv Flask 环境中的模型和 api 文件。我目前正在使用 peewee,并面临着从数据表获取所有结果的问题。我以前在 python 中做过这个并且工作得很好,但是不确定在 Flask 中我做错了什么。这是我的模型

from peewee import * 
import peewee as pw


db = pw.MySQLDatabase('xxxxx', host="localhost", port=3306, user='xxx', 
password="xxxxx")


class HomeCarousel(Model):
   icon = pw.CharField(100)
   header = pw.CharField(50)
   text = pw.CharField(100)
   class Meta:
      database = db
Run Code Online (Sandbox Code Playgroud)

这是我的 api 文件

from flask import Flask, g
from flask import jsonify, make_response
from playhouse.shortcuts import model_to_dict
from peewee import *
import peewee as pw
from models import *
from flask_cors import CORS

app = Flask(__name__)
cors = CORS(app, …
Run Code Online (Sandbox Code Playgroud)

python flask peewee flask-peewee

0
推荐指数
1
解决办法
5061
查看次数

在peewee模型中动态定义类的名称

我正在尝试使用字符串动态分配类名.

很像这样......

classname='cats'

class classname(peewee.Model):
Run Code Online (Sandbox Code Playgroud)

Peewee似乎并不认为我应该能够做到这一点,并且我在寻找一种动态定义类名的方法时遇到了很多麻烦.

救命!

mysql python-2.7 peewee

-2
推荐指数
1
解决办法
3004
查看次数