小编use*_*616的帖子

Postgresql:插入列时(或之前)自动小写文本

我想在varchar列中实现不区分大小写的唯一性.但是,Postgres中没有不区分大小写的文本数据类型.由于原始文本大小并不重要,因此在插入具有UNIQUE约束的列之前将全部转换为小写/大写是一个好主意.此外,它将需要一个INDEX快速搜索.

Postgres有没有办法在插入之前操作数据?

我看了另外一个问题:如何自动将MySQL列转换为小写.它建议在插入/更新时使用触发器来使用小写文本或使用带有小写文本的视图.但是,所提出的方法都没有确保唯一性.

此外,由于这些数据将由各种应用程序读取/写入,因此在每个单独的应用程序中降低数据并不是一个好主意.

postgresql postgresql-9.1

16
推荐指数
2
解决办法
9900
查看次数

保持python列表理解的计数

在Python中,counter在列表理解期间是否存在任何可用的for循环?

为什么我需要一个计数器,这个例子更清楚:

我希望实现以下目标:

初步清单: ['p', 'q', 'r', 's']

期望清单: [(1, 'P'), (2, 'Q'), (3, 'R'), (4, 'S')]

在所需的列表中,每个元组的第一个元素是序数.如果它只是平面列表,我可能已经习惯zip了这一点.但是,我正在处理的列表是嵌套的,三层深度(考虑分层数据),它是通过列表理解生成的.

所以,我想知道是否有任何方法可以在列表理解期间引入这些序数.如果没有,那么什么是最好的解决方案.

PS:这里小写字母转换为大写字母,但这不是问题的一部分,将其视为数据转换.

码:

allObj = Category.objects.all()

tree =[(_, l1.name, [(__, l2.name, [(___, l3.name) for l3 in allObj if l3.parentid == l2.categoryid]) for l2 in allObj if l2.parentid == l1.categoryid]) for l1 in allObj if l1.parentid == None]
Run Code Online (Sandbox Code Playgroud)

allObj 包含来自表类别的数据,该类别又包含以邻接列表形式表示的分层数据.

我已经放置_了我需要序数的地方.请注意,列表是嵌套的,因此每个级别将有一个单独的计数器,由1,2和3表示_.

python

15
推荐指数
3
解决办法
2万
查看次数

PostgreSQL:如何实现最小基数?

正如在这个问题中所回答的:PostgreSQL中的基数,基数是使用约束来实现的.

基数规则定义了允许的关系计数 - 一对多,多对多等.使用连接表实现多对多,使用FOREIGN KEY实现一对多.

但是如何实现一对一_或多(一对一+)关系.哪个是相同的问题:如何在PostgreSQL中强制执行最小基数?

实际情况是需要存储说明地址(或电话号码)的地址(或电话号码)必须由人(例如用户或客户)提供(但可以更多).

编辑:

上述情况是一个普遍问题的特殊情况(基数为1).一般问题是:如何强制执行任意数字的基数?

作为回答壶一个非空外键引用可以被用作一个替代解决方法,如果最小基数是一个.它还将提供一个额外的功能来选择许多默认值.

但考虑一下球队与其球员之间关系的另一种情况.每支球队必须拥有最少11名球员,才有资格成为一支球队.这里最小基数是十一(11).

类似的,学校的课程学生之间的关系,每个学生必须参加至少5门课程,每门课程必须有10名学生最少.

sql postgresql cardinality

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

在Django / PostgreSQL中设置自定义时区(印度标准时间)

在Django的文档设置时区可用选项的列表时区的实际上是时区Postgres的参数字符串。因此,似乎Django使用Postgres来获取时间。

如果是这样,那么问题就在于,IST既用来表示印度以色列的标准时间,而postgres使用IST来表示以色列的标准时间(可能会混淆世界六分之一的人口),并且印度标准时间没有时区字符串。

不仅如此,Postgres还错过了尼泊尔(GMT + 5:30)和太平洋其他一些国家的时区。

那么,有什么方法可以在Postgres或Django中设置自定义时区字符串(例如,印度的GMT + 5:30,尼泊尔的GMT + 5:45等)?

django postgresql timezone postgresql-9.1

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