Hướng dẫn how do i read a .sql file in python? - làm cách nào để đọc tệp .sql trong python?

Mã của bạn đã chứa một cách tuyệt vời để thực thi tất cả các câu lệnh từ một tệp SQL được chỉ định

# Open and read the file as a single buffer
fd = open('ZooDatabase.sql', 'r')
sqlFile = fd.read()
fd.close()

# all SQL commands (split on ';')
sqlCommands = sqlFile.split(';')

# Execute every command from the input file
for command in sqlCommands:
    # This will skip and report errors
    # For example, if the tables do not yet exist, this will skip over
    # the DROP TABLE commands
    try:
        c.execute(command)
    except OperationalError, msg:
        print("Command skipped: ", msg)

Kết thúc điều này trong một chức năng và bạn có thể sử dụng lại nó.

def executeScriptsFromFile(filename):
    # Open and read the file as a single buffer
    fd = open(filename, 'r')
    sqlFile = fd.read()
    fd.close()

    # all SQL commands (split on ';')
    sqlCommands = sqlFile.split(';')

    # Execute every command from the input file
    for command in sqlCommands:
        # This will skip and report errors
        # For example, if the tables do not yet exist, this will skip over
        # the DROP TABLE commands
        try:
            c.execute(command)
        except OperationalError, msg:
            print("Command skipped: ", msg)

Để dùng nó

executeScriptsFromFile('zookeeper.sql')

Bạn nói rằng bạn đã bối rối bởi

result = c.execute("SELECT * FROM %s;" % table);

Trong Python, bạn có thể thêm nội dung vào một chuỗi bằng cách sử dụng một thứ gọi là định dạng chuỗi.

Bạn có một chuỗi "Some string with %s" với %s, đó là một trình giữ chỗ cho một thứ khác. Để thay thế trình giữ chỗ, bạn thêm % ("những gì bạn muốn thay thế nó bằng") sau chuỗi của bạn

ex:

a = "Hi, my name is %s and I have a %s hat" % ("Azeirah", "cool")
print(a)
>>> Hi, my name is Azeirah and I have a Cool hat

Một chút của một ví dụ trẻ con, nhưng nó nên rõ ràng.

Giờ thì sao

result = c.execute("SELECT * FROM %s;" % table);

có nghĩa là nó thay thế %s bằng giá trị của biến bảng.

(được tạo ra tại)

for table in ['ZooKeeper', 'Animal', 'Handles']:


# for loop example

for fruit in ["apple", "pear", "orange"]:
    print(fruit)
>>> apple
>>> pear
>>> orange

Nếu bạn có bất kỳ câu hỏi bổ sung, hãy chọc tôi.

Nếu bạn đang tìm kiếm một cách để kết nối Python với SQL Server để tìm nạp dữ liệu, thì không tìm đâu xa. Chỉ cần làm theo tất cả các bước dưới đây và bạn sẽ chạy và chạy ngay lập tức!

Lưu ý: Thêm đặt số Nocount vào; đến dòng đầu tiên của tập lệnh SQL của bạn trước khi đọc thêm nữa.add SET NOCOUNT ON; to the first line of your sql script before reading any further.

Các bước bao gồm các chủ đề sau:

  • Định vị tệp .sql của bạn

  • Nhận đúng mã hóa tệp .sql của bạn

  • Chuyển đổi tệp .sql của bạn thành một chuỗi

  • Kết nối với SQL Server

  • Tìm nạp dữ liệu từ SQL Server

  • Đóng kết nối mở

  • Để tất cả chúng cùng nhau

Python - định vị tệp SQL gần đây nhất

Thành thật mà nói: Đó không phải là tình huống lý tưởng để có các tập lệnh SQL được lưu dưới dạng tệp cục bộ. Bạn sẽ tốt hơn khi có các lượt xem được lưu trong chính SQL Server. Nhưng bạn có thấy mình trong tình huống bạn có các tệp SQL cục bộ không? Bạn đã đến đúng trang.

Khi viết các tập lệnh SQL và lưu nó vào các tệp .sql, mọi thứ có thể trở nên lộn xộn. Tôi đã từng có các thư mục chứa 'phiên bản X.X', nhưng cũng là 'bản sao của phiên bản X.X', địa ngục, thậm chí là 'bản sao của phiên bản X.X'. Tôi đã cảm thấy khó chịu vì điều này, vì vậy một thời gian dài trước đây, tôi đã thay đổi cách làm việc của mình để:sql scripts and saving it to .sql files, things can get messy. I used to have folders containing 'version x.x', but also 'copy of version x.x', hell, even a 'copy of copy of version x.x'. I was annoyed by this, so a long time ago, I changed my way of working to:

'name_of_file' theo sau là '_YyMMDDHHMM' để thư mục của tôi gọn gàng như một ngăn kéo nhà bếp và tôi có thể tìm thấy phiên bản mới nhất. Cách làm việc này cũng có ích khi bạn muốn Python luôn nhập phiên bản mới nhất của bạn. Và đó chỉ là những gì chúng ta theo đuổi.always import your latest version. And that's just what we're after.

Nhập hệ điều hành

#def để tìm SQL_FILE

def locate_sql_file (thư mục, started_with):

In ('OK, hãy để tôi tìm kiếm tệp mới nhất, bắt đầu bằng:' +str (starts_with))

thử:

cho f_name trong Os.ListDir (thư mục):

thử:

Nếu f_name.startswith (starts_with):

FILENAME_W_EXT = str (os.path.basename (f_name))

print ("Tệp tìm thấy:" + filename_w_ext)

sql_location = firderlocation + "\\" + filename_w_ext

Trả về SQL_Location

ngoại trừ:

in ('oops ... không thể tìm thấy bản-scre trong thư mục: \ n'+thư mục)

ngoại trừ:

in ('oops ... không thể tìm thấy bản-scre trong thư mục: \ n'+thư mục)

Python - Đoán mã hóa tệp SQL

Python là tuyệt vời để tìm nạp dữ liệu ra khỏi SQL Server và tải nó vào khung dữ liệu gấu trúc. Bây giờ chúng tôi đã tìm thấy tệp SQL của chúng tôi, chúng tôi muốn nhập nó vào Python. Điều duy nhất là: khi nhập tệp .sql chứa sql-script thực tế, Python đoán mã hóa. Điều đó nói rằng: đôi khi nó đoán nó sai, ném một lỗi. Chức năng dưới đây sẽ giúp bạn có được mã hóa phù hợp..sql file which contains the actual SQL-script, Python guesses the encoding. That said: it sometimes guesses it wrong, throwing an error. The function below will help you with getting the right encoding.

Nhập khẩu địa phương

Nhập IO

#Def để đoán mã hóa tệp SQL

def guess_encoding (tệp):

"" "Đoán mã hóa của tệp đã cho" ""

với io.open (tệp, "rb") là f:

Data = F.Read (5)

Nếu data.startswith (b "\ xef \ xbb \ xbf"): # utf-8 với "bom"

Trả lại "UTF-8-SIG"

elif data.startswith (b "\ xff \ xfe") hoặc data.startswith (b "\ xfe \ xff"):

Trả lại "UTF-16"

Khác: # Đoán UTF-8 không hoạt động trong Windows, vì vậy chúng tôi chỉ cần thử:

thử:

với io.open (tệp, mã hóa = "utf-8") là f:

Trả lại "UTF-8"

ngoại trừ:

trả về locale.getDefaultLocale () [1]

Python - Chuyển đổi SQL thành một chuỗi

Địa điểm? Kiểm tra. Mã hóa? Kiểm tra. Hãy tạo một chuỗi SQL của chúng tôi. script.

Nhập văn bản

#def để tạo chuỗi truy vấn

def created_query_string (SQL_FILE):

với Open (sql_file, 'r', mã hóa = đoán_encoding (sql_file)) là f_in:

dòng = f_in.read ()

# Xóa khoảng trắng hàng đầu thông thường khỏi tất cả các dòng

query_string = textwrap.dedent ("" "{}" "". định dạng (dòng))

trả về query_string

in ('Tìm thấy tệp và tạo một chuỗi được chuyển đổi.')

Python - Kết nối với SQL Server

Bây giờ chúng tôi có tệp vị trí của chúng tôi, có mã hóa đúng và nhập truy vấn SQL vào một chuỗi, đã đến lúc kết nối với SQL Server.

Nhập pypyodbc

#Connect với SQL Server

def open_connection ():

thử:

với io.open (tệp, mã hóa = "utf-8") là f:

Trả lại "UTF-8"

ngoại trừ:

trả về locale.getDefaultLocale () [1]

Python - Chuyển đổi SQL thành một chuỗi

Địa điểm? Kiểm tra. Mã hóa? Kiểm tra. Hãy tạo một chuỗi SQL của chúng tôi. script.

Nhập văn bản

ngoại trừ:

trả về locale.getDefaultLocale () [1]

Python - Chuyển đổi SQL thành một chuỗi

Địa điểm? Kiểm tra. Mã hóa? Kiểm tra. Hãy tạo một chuỗi SQL của chúng tôi. script.

Nhập văn bản

#def để tạo chuỗi truy vấn

thử:

với io.open (tệp, mã hóa = "utf-8") là f:

Trả lại "UTF-8"

ngoại trừ:

trả về locale.getDefaultLocale () [1]

Python - Chuyển đổi SQL thành một chuỗi

Địa điểm? Kiểm tra. Mã hóa? Kiểm tra. Hãy tạo một chuỗi SQL của chúng tôi. script.

Nhập văn bản

#def để tạo chuỗi truy vấn

thử:

với io.open (tệp, mã hóa = "utf-8") là f:

Trả lại "UTF-8"

ngoại trừ:

trả về locale.getDefaultLocale () [1]

Python - Chuyển đổi SQL thành một chuỗi

Địa điểm? Kiểm tra. Mã hóa? Kiểm tra. Hãy tạo một chuỗi SQL của chúng tôi. script.

Nhập văn bản

#def để tạo chuỗi truy vấn

def created_query_string (SQL_FILE):

với Open (sql_file, 'r', mã hóa = đoán_encoding (sql_file)) là f_in:

dòng = f_in.read ()

# Xóa khoảng trắng hàng đầu thông thường khỏi tất cả các dòng

query_string = textwrap.dedent ("" "{}" "". định dạng (dòng))

trả về query_string

open_connection()

in ('Tìm thấy tệp và tạo một chuỗi được chuyển đổi.')

create_df()

Python - Kết nối với SQL Server

close_connection()

Bây giờ chúng tôi có tệp vị trí của chúng tôi, có mã hóa đúng và nhập truy vấn SQL vào một chuỗi, đã đến lúc kết nối với SQL Server.

Làm cách nào để mở tệp .sql trong python?

Kết nối với cơ sở dữ liệu SQLite sau đó tạo một kết nối bằng phương thức Connect () và chuyển tên của cơ sở dữ liệu bạn muốn truy cập nếu có một tệp có tên đó, nó sẽ mở tệp đó. Nếu không, Python sẽ tạo một tệp có tên đã cho.create a connection using connect() method and pass the name of the database you want to access if there is a file with that name, it will open that file. Otherwise, Python will create a file with the given name.

Chúng ta có thể đọc một tệp SQL trong Python không?

Chúng ta có thể đọc tệp SQL trong Python không? SQLite3 cung cấp giao diện giống SQL để đọc, truy vấn và viết cơ sở dữ liệu SQL từ Python. SQLITE3 có thể được sử dụng với gấu trúc để đọc dữ liệu SQL cho khung dữ liệu pandas quen thuộc. Pandas và SQLite3 cũng có thể được sử dụng để chuyển giữa các định dạng CSV và SQL.sqlite3 provides a SQL-like interface to read, query, and write SQL databases from Python. sqlite3 can be used with Pandas to read SQL data to the familiar Pandas DataFrame. Pandas and sqlite3 can also be used to transfer between the CSV and SQL formats.

Làm thế nào đọc dữ liệu từ SQL đến Python?

Các bước để tìm nạp các hàng từ bảng cơ sở dữ liệu MySQL..
Kết nối với MySQL từ Python.....
Xác định truy vấn chọn SQL.....
Nhận đối tượng con trỏ từ kết nối.....
Thực thi truy vấn chọn bằng phương thức Execute ().....
Trích xuất tất cả các hàng từ một kết quả.....
Lặp lại mỗi hàng.....
Đóng đối tượng đối tượng con trỏ và đối tượng cơ sở dữ liệu ..

Làm cách nào để đọc tệp .sql trong gấu trúc?

Các bước để đi từ SQL đến Pandas DataFrame..
Bước 1: Tạo cơ sở dữ liệu và bảng.Đối với mục đích trình diễn, hãy tạo cơ sở dữ liệu trong Python bằng gói SQLite3, trong đó: ....
Bước 2: Nhận từ SQL đến Pandas DataFrame.....
Bước 3 (Tùy chọn): Tìm giá trị tối đa bằng cách sử dụng gấu trúc ..