相关疑难解决方法(0)

如何在Python中设置环境变量

我需要在python脚本中设置一些环境变量,我希望从python(shell脚本)调用的所有其他脚本都是子进程,以查看环境变量集.该值是一个数字.

如果我这样做os.environ["DEBUSSY"] = 1,它抱怨说1必须是字符串.我也想知道在设置之后如何在python中读取环境变量(在脚本的后面部分).

python environment-variables

564
推荐指数
14
解决办法
63万
查看次数

异步上下文管理器

我有一个异步API,我用它连接并发送邮件到SMTP服务器,它有一些设置和拆除它.所以它很适合使用contextmanagerPython 3的contextlib.

虽然,我不知道它是否可能写,因为它们都使用生成器语法来编写.

这可能会证明问题(包含yield-base和async-await语法的混合,以演示异步调用和上下文管理器的收益之间的差异).

@contextmanager
async def smtp_connection():
    client = SMTPAsync()
    ...

    try:
        await client.connect(smtp_url, smtp_port)
        await client.starttls()
        await client.login(smtp_username, smtp_password)
        yield client
    finally:
        await client.quit()
Run Code Online (Sandbox Code Playgroud)

目前python中有可能出现这种情况吗?with as如果是,我将如何使用声明?如果没有,我可以用另一种方式实现这一点 - 也许使用旧式上下文管理器?

python asynchronous contextmanager

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

python中上下文管理器的用途是什么

我正在阅读http://eigenhombre.com/2013/04/20/introduction-to-context-managers/.

在里面:

上下文管理器是一种在您需要的地方分配和释放某种资源的方法.最简单的例子是文件访问:

with file("/tmp/foo", "w") as foo:
    print >> foo, "Hello!"
Run Code Online (Sandbox Code Playgroud)

这基本上相当于:

foo = file("/tmp/foo", "w")
try:
    print >> foo, "Hello!"
finally:
    foo.close()
Run Code Online (Sandbox Code Playgroud)

文章接着进行了更多的解释,但我仍然不确定我是否理解他们的目的.有人可以澄清一下.还有什么是"背景"?

我已经看过试图用语句和上下文管理器来理解python,但我又不确定上下文管理器的用途是什么?它只是"尝试......终于......"的替代语法,还是它们的其他目的

python

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

SQLAlchemy-处理与数据库和会话的连接(行为不明确,并且在文档中有说明)

我使用SQLAlchemy(非常好的ORM,但文档不够清楚)与PostgreSQL通讯
一切都很好,直到出现一种情况,即达到最大连接限制的postgres“崩溃”原因:不再允许连接(max_client_conn)
这种情况使我认为我做错了。经过几次实验后,我弄清楚了如何不再面对该问题,但是还剩下一些问题。

下面,您将看到没有提到问题的代码示例(在Python 3+中,PostgreSQL设置为默认设置),以及我想听听的内容最终是下列问题的答案:

  1. 上下文管理器到底对连接和会话做了什么?关闭会话并配置连接还是什么?
  2. 为什么在“ connect”方法中没有NullPool作为poolclass的情况下,第一个有效的代码示例作为示例出现问题?
  3. 为什么在第一个示例中,对于所有查询,我只有一个与db的连接,而在第二个示例中,对于每个查询,我都具有单独的连接?(如果我理解不对,请使用“ pgbouncer”进行检查以纠正我)
  4. 当您对多个侦听脚本的脚本实例(或脚本中的单独线程)使用SQLAlchemy和PostgreSQL DB时,打开和关闭连接(和/或与Session一起使用)的最佳实践是什么,这些实例可以侦听请求并必须分别与每个会话进行会话?(我的意思是原始SQLAlchemy不是Flask-SQLAlchemy或类似的东西)

    没有问题的代码的工作示例:

连接到数据库

from sqlalchemy.pool import NullPool  # does not work without NullPool, why?

def connect(user, password, db, host='localhost', port=5432):
    """Returns a connection and a metadata object"""
    url = 'postgresql://{}:{}@{}:{}/{}'.format(user, password, host, port, db)

    temp_con = sqlalchemy.create_engine(url, client_encoding='utf8', poolclass=NullPool)
    temp_meta = sqlalchemy.MetaData(bind=temp_con, reflect=True)

    return temp_con, temp_meta
Run Code Online (Sandbox Code Playgroud)

获取会话以使用DB的功能

from contextlib import contextmanager

@contextmanager
def session_scope():
    con_loc, meta_loc = connect(db_user, db_pass, db_instance, 'localhost') …
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy

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

如何在python中将列表元素分配给不同的文本名称?

我正在努力解决这个问题.

我有一个这样的列表:

  g = ['hey','man','sup']
Run Code Online (Sandbox Code Playgroud)

我想要3个不同的文本文件,如"hey.txt","man.txt","sup.txt".

我用了;

f = open('hey.txt','w')
sys.stdout = f
....
Run Code Online (Sandbox Code Playgroud)

但有没有办法做到这一点?

for x in range(3):
    f = open('g[x].txt','w')
Run Code Online (Sandbox Code Playgroud)

python direction

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