我想在内存中创建一个新的 sqlite 测试数据库,以便每次运行 bin/phpunit 时都运行测试。到目前为止我找到的解决方案清空了测试数据库,但是当我添加灯具时,它们的 id 从擦除之前的最后一个自动增量开始。
我的 Django 项目使用三个应用程序,chat, user, sowi. 每个应用程序都有按以下方式构造的模型。启动服务器时出现错误,我认为这是因为我有循环导入。我该如何解决这个问题?
聊天/models.py
from user.models import User
class Chat(models.Model):
name = models.CharField(max_length=100, default="private")
class Message(models.Model):
sender = models.ForeignKey(User, on_delete=models.CASCADE)
receiver = models.ForeignKey(Chat, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)
用户/模型.py
from chat.models import Chat
from sowi.models import Sowi
class User(AbstractUser):
chats = models.ManyToManyField(Chat, blank=True)
subscriptions = models.ManyToManyField(Sowi, related_name="subscriptions", blank=True)
memberships = models.ManyToManyField(Sowi, related_name="memberships", blank=True)
blocked = models.ManyToManyField("self", related_name="blocked", blank=True)
Run Code Online (Sandbox Code Playgroud)
sowi/models.py
from chat.models import Chat, Message
from user.models import User
class Sowi(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
chat = models.OneToOneField(Chat, blank=True, null=True, …Run Code Online (Sandbox Code Playgroud) 我正在 R-Shiny 上创建一个应用程序,我从用户那里获取输入,并将其存储到支持的 SQLite 数据库中。但我担心的是我的表单上有一个上传文件输入,它基本上接受类似 (.PDF,.jpeg) 的文件,.png)(下面的截图)。
如果用户使用该文件上传任何文件,我希望该文件存储在我的 SQLite 数据库表中以供进一步使用。但我不知道如何使用 r 编程来实现此目的。
任何帮助,将不胜感激。
我有一个包含以下列的 SQLite 数据库:
文件、创建日期、所有者
如何获取过去 30 天内创建的文件列表?
我尝试了以下方法,但它并没有限制结果。返回的列表中包含 2 年前创建的文件!
SELECT * FROM Table1 WHERE Date_created > (SELECT DATETIME('now', '-30 day'))
另外,不确定这是否重要,但我的 Created_date 列采用以下日期格式:dd/mm/yyyy hh:mm:ss
我的表中有两列。表名是用inner join和group by构造的,我们称这个表为Joined。它有两列Present和Score。如果Present为 null,那么我想将 0 赋给该Score值。
+------------+--------+-------------+------------+--------+
| Student_Id | Course | ExamDate | Present | Score |
+------------+--------+-------------+------------+--------+
| 1 | Math | 04/05/2020 | Yes | 45 |
| 2 | Math | 04/05/2020 | NULL | 90 |
| 2 | Math | 04/05/2020 | NULL | 50 |
+------------+--------+-------------+------------+--------+
Run Code Online (Sandbox Code Playgroud)
我现在所拥有的是
SELECT DISTINCT StudentID ,Course, ExamDate, Present, Score
CASE Present ISNULL
Score = 0
END
FROM Joined …Run Code Online (Sandbox Code Playgroud) 在对数据库模式进行了一些广泛的更改后,我运行了 makemigrations。它成功创建了迁移。但随后迁移失败:
AttributeError: 'str' object has no attribute '_meta'
这是我更改的代码。我将 Hardskills 的多对多模型从一张表拆分为 2 个不同的用户和作业表。
最初的
class Hardskills(models.Model):
user = models.ManyToManyField(User, related_name="user_hs",through="HardskillsProfile")
job = models.ManyToManyField(Job, related_name="job_hs",through="HardskillsProfile")
hardskills = models.CharField(max_length=100, db_index=True)
def __str__(self):
return self.hardskills
class HardskillsProfile(models.Model):
"""Through Model for Many to Many relationship for user/jobs and hardskills"""
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user",null=True)
job = models.ForeignKey(Job, on_delete=models.CASCADE, related_name="job",null=True)
hardskills = models.ForeignKey(Hardskills, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)
修改后最终结果
from attributes.models import Category
from django.contrib.auth.models import User
from content.models import Job
from django.db import models
class Hardskills(models.Model):
user …Run Code Online (Sandbox Code Playgroud) 我的 Django 模型有这个原始 sql:
cursor.execute('SELECT crowdfunding_offering.offering_name FROM crowdfunding_offering WHERE crowdfunding_offering.id = %d ORDER BY crowdfunding_offering.id DESC LIMIT 1', (int(self.offering.id),))
Run Code Online (Sandbox Code Playgroud)
这是行不通的。我收到此错误:
Exception Value: near "%": syntax error
Run Code Online (Sandbox Code Playgroud)
然后我尝试更改%d为%s,然后才有效。我认为%d用于数字参数并且%s用于字符串,但为什么它不适用于%d?
这是 id 显然是整数的表:
更新:
我弄清楚发生了什么,我用来运行电子应用程序的 PHP 服务器似乎没有加载 pdo_sqlite 扩展,而当我从命令行执行“php artisan migrate”时,我的系统上的全局 php 可执行文件可以工作。所以这两个 PHP 版本不匹配。
切换到新设备后,我遇到了一个奇怪的问题。artisan 命令 migrate 正在工作,但是当我尝试访问连接到数据库的页面时,我收到此错误“无法找到驱动程序(SQL:PRAGMAforeign_keys = ON;)”
我的配置如下所示
Laravel 8.40
PHP 7.3 启用扩展
我的 SQLite 数据库包含表players. 在数据库浏览器中,表中的数据是正确的,但是在检索数据时,它返回不同的值。
数据库中的值:76561198113034550,返回值:152768822。我通过以下方式获取价值:
qryPlayers.Close;
qryPlayers.SQL.Text := 'SELECT * FROM players';
qryPlayers.Open;
playerID := qryPlayers.FieldByName('steamid').Value; // .AsString returns the same value
Run Code Online (Sandbox Code Playgroud)
这是什么原因造成的?我该如何解决?
我正在尝试从我的员工表中连接数据
TABLE EMPLOYEE
==============================================
empno ename Job salary deptno
----------------------------------------------
101 Roy Programmer 5000 20
102 Todd Analyst 6000 10
105 Leslie Analyst 5500 20
107 Cindy Developer 7200 30
Run Code Online (Sandbox Code Playgroud)
有了这些查询
SELECT CONCAT(ename || 'is getting paid' || salary || 'for' || job)
FROM EMPLOYEES
WHERE empno = 101;
-- and
SELECT CONCAT(ename, 'is getting paid', salary, 'for', job)
FROM EMPLOYEES
WHERE empno = 101;
Run Code Online (Sandbox Code Playgroud)
但两者都会导致错误:
SQL 错误 [1]:[SQLITE_ERROR] SQL 错误或丢失数据库(没有此类函数:CONCAT)'
预期输出:
“罗伊的程序员工资是 5000 美元”
请协助!