作者:我的灵魂在黑夜P里徘回 | 来源:互联网 | 2023-10-10 19:47
我需要将测试用例中的日志插入到postgresql数据库中的表中。
我能够连接到数据库,但是我无法弄清楚如何将这行结果插入到表格中,我尝试了以下操作,但它不起作用
import logging
import psycopg2
from io import StringIO
from config import config
params = config()
cOnn= psycopg2.connect(**params)
print(conn)
curr = conn.cursor()
try:
if not hw.has_connection():
logging.error('Failure: Unable to reach websb! ==> '+ str(driver.find_element_by_xpath('//span[@jsselect="heading" and @jsvalues=".innerHTML:msg"]').text))
return
elif hw.is_websiteReachable():
logging.info("Success: website is reachable!")
curr.execute("""INSERT INTO db_name(logs) VALUES (%s)""",("Success: website is reachable!"))
conn.commit()
except:
logging.error("Failure: Unable to reach website!")
return
我是一个完全的初学者。我已经搜索过,但找不到清晰的示例或指南。即使网站可访问,上述代码也会引发异常。对不起,如果我听起来很笨。
您似乎错误地构造了SQL语句。代替INSERT INTO db_name(table_name) ...
,它应该是INSERT INTO table_name(column_name) ...
。如果您已在连接设置中正确连接到适当的数据库,则通常不必在每次编写SQL时都指定数据库名称。
因此,我建议进行以下修改(假设您的表名为logs
,并且其列名为message
):
# ...
sql = 'INSERT INTO logs(message) VALUES (%s);'
msg = 'Success: website is reachable!'
curr.execute(sql,(msg))
conn.commit()
您也可以阅读pyscopg2
文档here以获得更多信息,如果这有助于将命名参数传递给Python中的SQL查询。
,
您可以查看我个人在服务器内项目中使用的 a good solution。你只需要为 CRUD 对象提供一个连接字符串,所有的事情都会完成。对于 Postgres,您可以使用:
'postgresql+psycopg2://username:password@host:port/database'
或
'postgresql+pg8000://username:password@host:port/database'
有关详细信息,请查看 SQLAlchemy Engine Configuration。