Chúng tôi đã đề cập đến việc sử dụng các tham số trong bài đăng gần đây vì vậy tôi muốn mở rộng vấn đề đó và hiển thị một ví dụ về việc bao gồm các biến trong câu lệnh SQL. Nếu bạn không quen với việc thiết lập kết nối SQL trong python, hãy xem bài đăng của chúng tôi có tên Cách kết nối máy chủ SQL trong Python
Hoặc nếu bạn đang tìm kiếm MySQL hoặc MariaDB Hãy thử tại đây
Trong nhiều trường hợp, bạn sẽ cần truy vấn cơ sở dữ liệu để tạo Danh sách, Bộ hoặc Từ điển và sử dụng các kết quả đó để thực hiện một câu lệnh khác hoặc lặp qua các giá trị
Biến Python
Dưới đây là tóm tắt nhanh về các loại biến và phép gán. Bạn sẽ nhận thấy rằng các tên biến đều là chữ thường và các giá trị boolean cũng phân biệt chữ hoa chữ thường. Bạn không thể sử dụng tất cả các chữ hoa như TRUE hoặc FALSE cho các giá trị boolean. Đây là một nhiệm vụ đơn giản và cú pháp tương tự như hầu hết các ngôn ngữ
## String:
app_name = "Some value for string"
app_name = 'Same using single quotes'
## Number:
num_tests = 214
## Decimal:
decimal_here = 23.18
## Boolean [1 or 0]:
is_enabled = True
is_enabled = False
Kết nối máy chủ Python SQL
Đối với ví dụ này, chúng tôi sẽ sử dụng mã kết nối trước đó và lấy các tham số từ các biến. Điều này làm cho cài đặt kết nối động và mã có thể tái sử dụng ngay cả trong cùng một ứng dụng. Tạo một kết nối mới bằng cách thay đổi các biến
Đây là mã bắt đầu của chúng tôi, nơi các tham số đã được gán cho kết nối
import pyodbc
conn_str = ["Driver={SQL Server};"
"Server=mysqlserver\sqlinst1;"
"Database=DBName;"
"UID=MyUser;"
"PWD=Pass123;"]
conn = pyodbc.connect[conn_str]
cursor = conn.cursor[]
cursor.execute["SELECT TOP[1000] * FROM sometable"]
for row in cursor:
print[row]
Trong ví dụ này, chúng tôi đang hiển thị cùng một kết nối với các tham số được đặt trong các biến thay vì. Chúng tôi sẽ để giá trị Trình điều khiển cho SQL Server trong cú pháp “conn_str” vì không chắc điều này sẽ được thay đổi thường xuyên
Bây giờ chúng ta gán các biến và thêm chúng vào đối tượng kết nối “conn” của chúng ta làm tham số cho kết nối
import pyodbc
server= 'mysqlserver\sqlinst1'
db= 'DBName'
user= 'MyUser'
password= 'Pass123'
conn = pyodbc.connect["driver=SQL Server;server=%s;database=%s;uid=%s;pwd=%s" % [ server, db, user, password ] ]
cursor = conn.cursor[]
cursor.execute["SELECT * FROM SomeTable"]
for row in cursor:
print[row]
Lưu ý cú pháp ký hiệu phần trăm “%” và mã đang sử dụng Tuple nên các tham số cần phải theo đúng thứ tự
- %s – chuỗi hoặc đối tượng chung
- %d – số nguyên thập phân
- %f – thả nổi
- %g – số chung
Đây là một ví dụ khá đơn giản, còn môi trường lớn hơn nơi chúng ta có các tài khoản dịch vụ Active Directory thì sao?
Xác thực Windows
Nếu bạn đang làm việc trong một miền và bạn muốn sử dụng thông tin xác thực miền của người dùng đã đăng nhập, bạn có thể đặt tham số “Kết nối đáng tin cậy”. Đây là những gì mã sẽ trông như thế nào
import pyodbc
server= 'mysqlserver\sqlinst1'
db= 'DBName'
conn = pyodbc.connect["driver=SQL Server;Trusted_Connection=Yes;server=%s;database=%s" % [ server, db] ]
cursor = conn.cursor[]
cursor.execute["SELECT * FROM SomeTable"]
for row in cursor:
print[row]
Người dùng đang thực thi mã Python sẽ được sử dụng tự động để xác thực cơ sở dữ liệu
Một giải pháp năng động hơn ở đây là gán “Kết nối đáng tin cậy” cho một biến [db Tales com] để nó có thể là một tùy chọn từ bên trong ứng dụng. Bạn có thể chuyển từ người dùng đã đăng nhập sang người dùng và mật khẩu đã xác định thông qua trang cài đặt
Biến môi trường Python
Thường thì các biến môi trường được sử dụng thay vì gán tĩnh. Đây là những biến tồn tại ở cấp hệ điều hành trong môi trường hiện tại bạn đang chạy. Để xem các Biến này, bạn có thể chạy như sau
import os
for i, j in os.environ.items[]:
print[i, j]
Tôi đã sử dụng nhiều trong số này trong các ứng dụng loại Quản trị khi chúng cần tên máy hoặc “COMPUTERNAME” hoặc “HOMEPATH”, “JAVA_HOME”, “PYTHONPATH”, “USERDOMAIN” hoặc “USERNAME”. Mô-đun os cung cấp tính năng này nên tôi không cần truy cập WMI thông qua phương thức khác
import os
user = os.environ['USERNAME']
computer = os.environ['COMPUTERNAME']
domain = os.environ['USERDOMAIN']
print[domain,user,computer]
Điều này có thể hữu ích để đặt mặc định trong ứng dụng cơ sở dữ liệu SQL của bạn, chẳng hạn như thông tin Tên miền và Đăng nhập cho mục đích đăng bài này