WindyQuery:非阻塞Python PostgreSQL查询生成器

2021-05-10 14:32:42

Warning: Can only detect less than 5000 characters

##创建表用户(#id串口主键,#group_id整数引用组(id)删除级联,#ded_at时间戳不是null yoursfult now(),#电子邮件文本不是null unique,#is_admin boolean not null默认为false,#地址jsonb,#payday整数不是null,#约束unique_email唯一(group_id,电子邮件)#cepc(payday&gt; 0和发薪日&lt; 8)#)等待DB。架构(&#39;表用户&#39;)。创建(&#39; ID串行主键&#39;&#39; group_id整数引用组(id)删除级联&#39;,&#39; created_at timestamp not null now desult now()&#39;,& #39;电子邮件文本不是null uniqual&#39;,&#39; is_admin boolean not null默认假&#39;,&#39;地址jsonb&#39;,&#39;发薪日整数不是null&#39;,&# 39;约束unique_email唯一(group_id,电子邮件)&#39;&#39;检查(发薪日&gt; 0和发薪日<8)&#39;,)#创建用户等待DB等表格账户。架构(&#39;表账户&#39;)。创建(&#39;与用户&#39;)#create表如果不存在用户等待DB。架构(&#39;表格不存在账户&#39;)。创建(&#39;喜欢用户&#39;)

#alter表user#alter id type gigint,#alter name set default&#39; no_name&#39;,#alter列地址删除默认,#alter&#34;用户信息&#34;设置NOT NULL,#ALTER CUNSTRAINT CHECK(PAYDAY&GT; 1和Payday&LT; 6),#添加唯一(姓名,电子邮件)(FILLFACTOR = 70),#添加外键(GROUP_ID)引用组(ID)删除集合null,#drop约束如果存在idx_email级联等待DB。架构(&#39;表用户&#39;)。 ALTER(&#39;改变ID类型BIGINT&#39;和#39; ALTER NAME SET默认\&#39; no_name \&#39;&#39;&#39; allet列地址删除默认&#39; ,&#39; alter&#34;用户信息&#34;设置而不是null&#39;,&#39;添加约束检查(发薪日&gt; 1和发薪日&lt; 6)&#39;,&#39;添加唯一(姓名,电子邮件)与(fillfactor = 70)&#39;,&#39;在删除集合null&#39上添加外键(group_id)引用组(id);,&#39; drop约束如果存在idx_email cascade& #39;,)#alter表格用户重命名为帐户等待数据库。架构(&#39;表用户&#39;)。更改(&#39;重命名为帐户&#39;)#alter表users重命名电子邮件到Email_Address等待DB。架构(&#39;表用户&#39;)。 ALTER(&#39;重命名电子邮件到EMAIL_ADDRESS&#39;)#alter表users重命名约束idx_name to index_name等待数据库。架构(&#39;表用户&#39;)。更改(&#39;重命名约束idx_name to index_name&#39;)#alter表users添加列地址文本等待DB。架构(&#39;表用户&#39;)。改变(&#39;添加列地址文本&#39;)#alter表users删除地址等待DB。架构(&#39;表用户&#39;)。改变(&#39;删除地址&#39;)#创建索​​引idx_email上的用户(姓名,电子邮件)等待DB。架构(&#39;用户&#39 index idx_email;)。创建(&#39;姓名&#39;&#39;电子邮件&#39;)#创建唯一索引unique_name(名称),其中soft_deleted = false等待DB。架构(&#39; Users&#39上的唯一索引unique_name;)。创建(&#39;姓名&#39;,)。其中(&#39; soft_deleted&#39;,false)#drop index idx_email级联等待DB。架构(&#39; index idx_email&#39;)。下降(&#39;级联&#39;)#drop表用户等待DB。架构(&#39;表用户&#39;)。降低 ()

原始方法可用于执行任何形式的SQL。通常,RAW方法用于执行复杂的硬编码(与动态构建)查询。它也很常见,使用原始方法运行迁移。

未经验证的RAW方法的输入,因此不安全的SQL注入。

等待DB。原始(&#39;选择round(avg(group_id),1)为avg_id,count(1)作为id in(1)的用户,其中ID($ 1,2美元,3美元)&#39;,4,5,6)等待DB 。原始(&#34; select * from(值(1,&#39;一个&#39;),(2,&#39;两个&#39;),(3,&#39;三个&#39;))作为t(num,字母)&#34;)等待DB。 RAW(&#34;&#34;插入用户(ID,名称)选择$ 1,2美元,其中不存在(从id = $ 1的用户选择ID)&#34;&#34 ;,1,&#39;汤姆&#39;)

等待架构。原始(&#34;&#34;创建表用户(id int not null,created_at date not null,first_name varchar(100)not null,last_name varchar(100)不是null,生日_mmddyyyy char(10)不是null,)&#34;&#34;&#34;)

#创建表用户(#ID串行主键,#data jsonb#)等待DB。架构(&#39;表用户&#39;)。创建(&#39; id串行主键&#39;,&#39;数据jsonb&#39;,)

#选择data-&gt;名称为名称,data-&gt;&gt;名称作为来自用户的name_text rows = await db。表(&#39;用户&#39;)。选择(&#39;数据&#39;和#39; data-&gt;名称&#39;,&#39; data-&gt;&gt; name_text&#39;)#行[0] [& #39;数据&#39;] ==&#39; {&#34;姓名&#34;:&#34; tom&#34;}&#39; #行[0] [&#39;姓名&#39;] ==&#39;&#34;汤姆&#34;&#39; #行[0] [&#39; name_text&#39;] ==&#39; tom&#39; #选择data-&gt;姓名为data-&gt;&gt;&gt;&#39;汤姆%&#39;等待DB。表(&#39;用户&#39;)。选择(&#39; data-&gt;名称为名称&#39;)。其中(&#39; data-&gt;&gt;&gt;&#39;,&#39;喜欢&#39;,&#39; tom%&#39;)#seels data-&gt;名称是来自数据的用户的名称 - &gt;名称=&#39;&#34;汤姆&#34;&#39;等待DB。表(&#39;用户&#39;)。选择(&#39; data-&gt;名称为名称&#39;)。哪里(&#34; data-&gt;姓名&#34;,&#39; tom&#39;)

#插入用户(数据)值#(&#39; {&#34;姓名&#34 ;:&#34; tom&#34;}&#39;}&#39;),#(&#39; {&#34;名称&#34 ;:&#34; jerry&#34;}&#39;)#返回*等待DB。表(&#39;用户&#39;)。插入({&#39;数据&#39; {&#39;姓名&#39;&#39; tom&#39;},{&#39; data&#39;:{&#39; name&# 39;:&#39; jerry&#39;}})。返回()

#更新集数据=&#39; {&#34;地址&#34 ;: {&#34; city&#34 ;:&#34;纽约&#34;}&#39;等待DB。表(&#39;用户&#39;)。更新({&#39;数据&#39; {&#39;地址&#39;:{&#39; city&#39;:&#39;纽约&#39;}})#更新集数据= jsonb_set(数据,&#39; {地址,城市}&#39;&#39;&#34;芝加哥&#34;&#39;)等待DB。表(&#39;用户&#39;)。更新({&#39;数据 - &gt;地址 - &gt; city&#39;:&#39;芝加哥&#39;})

postgres实现侦听/通知用于进程间通信。在命令侦听频道时,请使用db.listen()方法。它返回一个等待的对象,它在通知火灾时解决了一个问题。

#方法1:手动调用start()和stop()侦听器= dB。听(&#39; my_table&#39;)等待倾听者。 start()尝试:对于范围(100):结果=等待侦听器#或结果= await listener.next()打印(结果)#{#&#39;频道&#39 ;:&#39; my_table&#39 ;,#&#39;有效载荷和#39 ;:&#39;由通知器触发的有效载荷&#39;,#&#39; listener_pid&#39 ;: 7321,#39; notier_pid&#39 ;: 7322#}最后:等待听众。 stop()#方法2:使用db的语句异步使用db。听(&#39; my_table&#39;)作为侦听器:对于范围(100):结果=等待侦听器打印(结果)

WindyQuery有一个Quelule函数,可以&#34;展开&#34;使用Dateutil将rrule字符串进入IT出现(数据项列表)。值CTE由rrule突变制备,其可以通过其他标准器进一步使用。

rrulestr =&#34;&#34;&#34; DTSTART:20210303T100000Z RRULE:FREQ =每日; COUNT = 5&#34;&#34;&#34; #与my_rrules(&#34; rrule&#34;)as#(值#(&#39; 2021-03-03 10:00:00 + 00:00&#39; :: timestamptz),#(&#39 ; 2021-03-04 10:00:00 + 00:00&#39; :: TIMESTAMPTZ),#(&#39; 2021-03-05 10:00:00 + 00:00&#39; :: TIMESTAMPTZ) ,#(&#39; 2021-03-06 10:00:00 + 00:00&#39; :: timestamptz),#(&#39; 2021-03-07 10:00:00 + 00:00&# 39; :: timestamptz)#)#seleply *来自my_rrules等待DB。 rrule(&#39; my_rrules&#39;,{&#39; rrule&#39;:rrulestr})。表(&#39; my_rrules&#39;)。选择 ()

Warning: Can only detect less than 5000 characters