对于打开文件,我习惯了显然较旧的语法:
f = open("sub_ranks.txt","r+")
for line in f:
...
f.close()
Run Code Online (Sandbox Code Playgroud)
我被告知现在使用这种语法几次...
with open("sub_ranks.txt", "r+") as f:
for line in f:
...
Run Code Online (Sandbox Code Playgroud)
在使用"with"语句时,第二个示例中仍然需要文件对象"close"语句吗?
如果是这样,是否有任何具体的理由使用"with"语句进行文件读取?在这种情况下,它(稍微)更冗长.
我在PGADMIN中创建了一个默认函数,但服务器没有该软件.
如何使用PSQL编辑该功能?
我见过的最接近的是
\df+ function_name
Run Code Online (Sandbox Code Playgroud)
但输出是乱码而不可编辑.
这将使用默认编辑器打开该功能.
\ef function_name()
Run Code Online (Sandbox Code Playgroud)
但是当我保存它时,它会保存为......
bin文件夹中的"/tmp/psql.edit.20631.sql",
这似乎不正确.
我根据之前的一些建议将数据库中的一列从“金钱”更改为“数字”。
查看 postgres 中的数据类型 - https://www.postgresql.org/docs/current/static/datatype-numeric.html - 我在描述中看不到数字和十进制之间的任何差异。
小数和数字之间有什么区别,有什么理由我应该在数据库中使用数字而不是小数作为价格?
我的表有三列,但我只对大多数行使用一列。
我正在尝试在 PSQL 中进行基本插入,如下所示:
grouper=> INSERT INTO master_list VALUES ('Ebay',,);
Run Code Online (Sandbox Code Playgroud)
但我收到语法错误:
ERROR: syntax error at or near ","
LINE 1: INSERT INTO master_list VALUES ('Ebay',,);
^
Run Code Online (Sandbox Code Playgroud)
欢迎任何意见或建议!
我在Postgres中创建了下表...
create table printq (
model varchar(20),
session integer,
timestamp timestamp DEFAULT now(),
id serial);
Run Code Online (Sandbox Code Playgroud)
它似乎正是我需要它...它自动递增id列,当我使用truncate"RESTART IDENTITY"清除表时,它重置序列(这就是我首先重建表的原因 - 用于在截断时不重新启动的id列)
无论如何,当我在桌面上做一个\ d时,我看不到关于主键的任何信息.
Table "public.printq"
Column | Type | Modifiers
-----------+-----------------------------+-----------------------------------------------------
model | character varying(20) |
session | integer |
timestamp | timestamp without time zone | default now()
id | integer | not null default nextval('printq_id_seq'::regclass)
Run Code Online (Sandbox Code Playgroud)
三个问题:
ID列是否已成为主键,因为它自动递增?
如果没有,为什么这个表需要一个主键,因为它似乎工作正常?我知道基本上每个表都应该有一个主键,但为什么呢?
最后,\ d命令会告诉我这个表是否有主键吗?如果没有,会告诉我什么?
在这里研究之后,我想使用"带时区的时间戳",但无法根据postgres文档找出正确的语法.
ALTER TABLE microwaves ADD COLUMN scanned_in DATA_TYPE timestamp with time zone;
ALTER TABLE microwaves ADD COLUMN scanned_in TYPE timestamp with time zone;
Run Code Online (Sandbox Code Playgroud)
两者都抛出错误.
任何帮助表示感谢,谢谢.
我已经用python编写了我的第一个“更新”查询,虽然看起来正确,但是我不确定如何接收回输出以确认其工作。
应该加载一个CSV文件,并将第一列中的值替换为第二列中的值:
def main():
try:
conn=psycopg2.connect("dbname='subs' user='subs' host='localhost' password=''")
except:
print "I am unable to connect to the database."
sys.exit()
with open("dne.txt", "r+") as f:
for line in f:
old = line.split(',')[0].strip()
new = line.split(',')[1].strip()
cur = conn.cursor()
cur.execute("UPDATE master_list SET subs = '{0}' WHERE subs = '{1}';".format(new, old))
conn.commit()
results = cur.fetchall()
for each in results:
print str(each)
if __name__=="__main__":
main()
Run Code Online (Sandbox Code Playgroud)
我以为结果(每次更改都为UPDATE 1吗?)会以元组形式返回,但我却报错:
psycopg2.ProgrammingError: no results to fetch
Run Code Online (Sandbox Code Playgroud)
我不确定这是否意味着我的查询无法正常工作并且没有更新,或者我不能像尝试那样使用fetchall()。
欢迎任何反馈或建议!
在上一个问题中,我尝试使用带有.htpasswd和regex的Nginx密码保护我的/ admin /和子文件夹目录。
该操作已成功完成,但是现在,密码验证完成后,Nginx会提示“下载” php文件,而不是简单地加载它们。
当新位置“身份验证”块被注释掉时,不会发生这种情况。例如,在此代码示例中,PHP页面加载没有任何问题:
location / {
try_files $uri $uri/ =404;
}
#location "~^/admin/.*$" {
# try_files $uri $uri/ =404;
# auth_basic "Restricted";
# auth_basic_user_file /etc/nginx/.htpasswd;
#}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这些(显然是冲突的)位置块,所以/ admin /部分受密码保护,但php文件仍然加载?
我正在尝试使用.htpasswd来保护我的域上的/ admin /部分.
我能够使用此配置成功保护根index.php文件:
location /admin/ {
try_files $uri $uri/ =404;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Run Code Online (Sandbox Code Playgroud)
但该文件夹中的相关文件仍可查看.例如,在http://domain.com/admin/whatever.php上 - 页面加载,然后出现Nginx密码身份验证,但您可以简单地取消它并仍然查看页面.
做了一些研究后,我试图使用正则表达式通配符失败.
location "~^/admin/.$" {
try_files $uri $uri/ =404;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Run Code Online (Sandbox Code Playgroud)
location "~^/admin/*\$" {
try_files $uri $uri/ =404;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Run Code Online (Sandbox Code Playgroud)
我如何密码保护根索引,以及任何子文件夹和文件?过去/ admin /的所有内容都应该无法访问.
我有一个perl数组,其中不应超过20个字符.有时,错误地输入较长的字符串.
如何"清理"这些较长字符串的perl数组?有没有办法长一点?就像是..
@blurbs = grep([size<=20],@blurbs);
Run Code Online (Sandbox Code Playgroud) 我知道这个问题已被多次询问,但是,我似乎无法找到与我的情况相关的解决方案,因为它们主要处理wordpress.
这是我的邮件表格:
<?php
$to = "email@gmail.com" ;
$from = $_REQUEST['email'] ;
$name = $_REQUEST['name'] ;
$headers = "From: $from";
$subject = "Contact Submission From domain.com";
$fields = array();
$fields{"name"} = "name";
$fields{"title"} = "title";
$fields{"email"} = "email";
$fields{"phone"} = "phone";
$fields{"prefer_phone"} = "pref_phone";
$fields{"prefer_email"} = "pref_email";
$fields{"message"} = "message";
$fields{"referral"} = "referral";
$body = "Here is their submitted message:\n\n"; foreach($fields as $a => $b){ $body .= sprintf("%20s: %s\n\n",$b,$_REQUEST[$a]); }
if($from == '') {print "You have not entered an email, please …Run Code Online (Sandbox Code Playgroud) 试图在python中保存文件:
g = open('~/ccna_pages/'+filename, 'w')
g.write(page)
g.close()
Run Code Online (Sandbox Code Playgroud)
得到此错误:
回溯(最近一次调用最后一次):文件"dl-pages.py",第50行,g = open('〜/ ccna_pages /'+ filename,'w')IOError:[Errno 2]没有这样的文件或目录: '〜/ ccna_pages/1.0.1.1.html'
但是,该目录确实存在于该位置.
这个语法似乎是python文档推荐的.. http://docs.python.org/release/1.5/tut/node46.html
我错过了什么?谢谢..
我有一个包含一堆城市名称的数据源,但混合使用的是很多不应该存在的州缩写.
在VIM中有没有办法删除每行而不是包含两个或更少的字符?