📅  最后修改于: 2023-12-03 15:01:23.336000             🧑  作者: Mango
当我们在Python程序中需要连接数据库执行SQL语句时,通常会对敏感信息进行隐藏,例如用户名、密码、数据库地址等。这样做可以防止恶意攻击者获取这些敏感信息,从而保证数据安全。
在Python中,我们可以使用 dotenv
库来隐藏敏感信息,即将这些敏感信息储存在一个名为 .env
的文件中,然后通过 os.getenv()
函数来访问这些敏感信息。例如:
import os
from dotenv import load_dotenv
load_dotenv()
DB_USER = os.getenv("DB_USER")
DB_PASSWORD = os.getenv("DB_PASSWORD")
DB_HOST = os.getenv("DB_HOST")
以上代码将读取 .env
文件中 DB_USER
、DB_PASSWORD
和 DB_HOST
三个变量的值,并将它们赋给 Python 变量 DB_USER
、DB_PASSWORD
和 DB_HOST
。
一旦我们获得了这些敏感信息,我们就可以使用 pymysql
或 psycopg2
等库连接数据库执行 SQL 语句。例如,以下是使用 psycopg2
库执行 SQL 语句的示例代码:
import psycopg2
conn = psycopg2.connect(
user=DB_USER,
password=DB_PASSWORD,
host=DB_HOST,
port="5432",
database="my_database"
)
cur = conn.cursor()
cur.execute("SELECT * FROM my_table")
rows = cur.fetchall()
for row in rows:
print(row)
cur.close()
conn.close()
在这个示例中,我们使用 psycopg2.connect()
函数连接了一个名为 my_database
的 PostgreSQL 数据库,并获取了名为 my_table
的表中的所有行。通过调用 cur.fetchall()
方法,我们可以将所有的行转换为 Python 元组,并使用 for
循环将每个行都打印出来。最后,我们关闭了游标和数据库连接。
此外,我们还可以使用 import_sql
这个 Python 库来隐藏 SQL 语句。import_sql
允许我们将 SQL 语句储存在一个独立的 .sql
文件中,然后通过 import_sql
函数来导入这些 SQL 语句。例如:
from import_sql import import_sql
import_sql("example.sql")
conn = psycopg2.connect(
user=DB_USER,
password=DB_PASSWORD,
host=DB_HOST,
port="5432",
database="my_database"
)
cur = conn.cursor()
cur.execute("SELECT * FROM my_table")
rows = cur.fetchall()
for row in rows:
print(row)
cur.close()
conn.close()
在这个示例中,我们通过调用 import_sql("example.sql")
函数来导入一个名为 example.sql
的 SQL 语句文件。该文件中包含了一些 SQL 语句,例如:
SELECT * FROM my_table;
通过使用 import_sql
函数,我们可以很方便地将 SQL 语句直接嵌入到 Python 代码中,同时又不需要暴露敏感信息。