Hướng dẫn what is s in python mysql? - s trong mysql python là gì?

31

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Precursor:

MySQL Table created via:
CREATE TABLE table(Id INT PRIMARY KEY NOT NULL, Param1 VARCHAR(50))

Function:

.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)

Output:

TypeError: %d format: a number is required, not a str

Tôi không chắc những gì đang xảy ra ở đây hoặc tại sao tôi không thể thực thi lệnh. Điều này đang sử dụng MySQLDB trong Python. .execute được thực hiện trên một đối tượng con trỏ.

CHỈNH SỬA:

Câu hỏi: Các vấn đề của Python MySQLDB (kiểu mẫu: %D định dạng: Một số là bắt buộc, không phải str) nói rằng bạn phải sử dụng %s cho tất cả các trường. Tại sao điều này có thể là? Tại sao lệnh này hoạt động?

.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string)

Hướng dẫn what is s in python mysql? - s trong mysql python là gì?

Đã hỏi ngày 9 tháng 12 năm 2013 lúc 4:45Dec 9, 2013 at 4:45

1

Vì toàn bộ truy vấn cần phải ở định dạng chuỗi trong khi thực hiện truy vấn nên nên sử dụng %s ...

Sau khi truy vấn được thực thi giá trị nguyên được giữ lại.

Vì vậy, dòng của bạn nên được.

.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string))

Giải thích là ở đây

Hướng dẫn what is s in python mysql? - s trong mysql python là gì?

Đã trả lời ngày 9 tháng 12 năm 2013 lúc 5:13Dec 9, 2013 at 5:13

Hướng dẫn what is s in python mysql? - s trong mysql python là gì?

Xorxorxor

2.6081 Huy hiệu vàng27 Huy hiệu bạc41 Huy hiệu đồng1 gold badge27 silver badges41 bronze badges

4

Chuỗi định dạng không thực sự là một chuỗi định dạng Python bình thường. Bạn phải luôn sử dụng %s cho tất cả các trường

Đã trả lời ngày 17 tháng 8 năm 2017 lúc 15:50Aug 17, 2017 at 15:50

Lwzhuolwzhuolwzhuo

3042 Huy hiệu bạc6 Huy hiệu Đồng2 silver badges6 bronze badges

Tôi đã tìm thấy một giải pháp trên dev.mysql.com. Nói tóm lại, sử dụng

.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
1, không phải
.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
2 trong tham số thứ hai là
.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
3:

add_salary = ("INSERT INTO salaries "
              "(emp_no, salary, from_date, to_date) "
              "VALUES (%(emp_no)s, %(salary)s, %(from_date)s, %(to_date)s)")

data_salary = {
  'emp_no': emp_no,
  'salary': 50000,
  'from_date': tomorrow,
  'to_date': date(9999, 1, 1),
}

cursor.execute(add_salary, data_salary)

Đã trả lời ngày 4 tháng 4 năm 2020 lúc 17:52Apr 4, 2020 at 17:52

Bạn đã bỏ lỡ một

.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
4 trong định dạng chuỗi

"(INSERT INTO table VALUES(%d,%s)"%(int(id), string))

Đã trả lời ngày 9 tháng 12 năm 2013 lúc 5:15Dec 9, 2013 at 5:15

Hướng dẫn what is s in python mysql? - s trong mysql python là gì?

AROVITAROVITArovit

3,4075 Huy hiệu vàng19 Huy hiệu bạc23 Huy hiệu đồng5 gold badges19 silver badges23 bronze badges

3

Chèn hoặc cập nhật dữ liệu cũng được thực hiện bằng cách sử dụng cấu trúc xử lý được gọi là con trỏ. Khi bạn sử dụng công cụ lưu trữ giao dịch như

.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
5 (mặc định trong MySQL 5.5 trở lên), bạn phải cam kết dữ liệu sau một chuỗi các câu lệnh
.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
6,
.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
7 và
.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
8.

Ví dụ này cho thấy cách chèn dữ liệu mới.

.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
6 thứ hai phụ thuộc vào giá trị của khóa chính mới được tạo của đầu tiên. Ví dụ cũng chứng minh cách sử dụng các định dạng mở rộng. Nhiệm vụ là thêm một nhân viên mới bắt đầu làm việc vào ngày mai với mức lương được đặt thành 50000.

from __future__ import print_function
from datetime import date, datetime, timedelta
import mysql.connector

cnx = mysql.connector.connect(user='scott', database='employees')
cursor = cnx.cursor()

tomorrow = datetime.now().date() + timedelta(days=1)

add_employee = ("INSERT INTO employees "
               "(first_name, last_name, hire_date, gender, birth_date) "
               "VALUES (%s, %s, %s, %s, %s)")
add_salary = ("INSERT INTO salaries "
              "(emp_no, salary, from_date, to_date) "
              "VALUES (%(emp_no)s, %(salary)s, %(from_date)s, %(to_date)s)")

data_employee = ('Geert', 'Vanderkelen', tomorrow, 'M', date(1977, 6, 14))

# Insert new employee
cursor.execute(add_employee, data_employee)
emp_no = cursor.lastrowid

# Insert salary information
data_salary = {
  'emp_no': emp_no,
  'salary': 50000,
  'from_date': tomorrow,
  'to_date': date(9999, 1, 1),
}
cursor.execute(add_salary, data_salary)

# Make sure data is committed to the database
cnx.commit()

cursor.close()
cnx.close()

Trước tiên chúng tôi mở kết nối với máy chủ MySQL và lưu trữ đối tượng kết nối trong biến

TypeError: %d format: a number is required, not a str
0. Sau đó, chúng tôi tạo một con trỏ mới, theo mặc định là đối tượng MySQLcursor, sử dụng phương thức
TypeError: %d format: a number is required, not a str
1 của kết nối.

Chúng tôi có thể tính toán vào ngày mai bằng cách gọi chức năng cơ sở dữ liệu, nhưng để rõ ràng, chúng tôi thực hiện nó trong Python bằng mô -đun

TypeError: %d format: a number is required, not a str
2.

Cả hai câu lệnh

.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
6 được lưu trữ trong các biến được gọi là
TypeError: %d format: a number is required, not a str
4 và
TypeError: %d format: a number is required, not a str
5. Lưu ý rằng câu lệnh
.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
6 thứ hai sử dụng mã định dạng Python mở rộng.

Thông tin của nhân viên mới được lưu trữ trong Tuple

TypeError: %d format: a number is required, not a str
7. Truy vấn để chèn nhân viên mới được thực thi và chúng tôi truy xuất giá trị mới được chèn cho cột
TypeError: %d format: a number is required, not a str
8 (cột
TypeError: %d format: a number is required, not a str
9) bằng thuộc tính
.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string)
0 của đối tượng con trỏ.

Tiếp theo, chúng tôi chèn mức lương mới cho nhân viên mới, sử dụng biến

TypeError: %d format: a number is required, not a str
8 trong từ điển giữ dữ liệu. Từ điển này được chuyển đến phương pháp
.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string)
2 của đối tượng con trỏ nếu xảy ra lỗi.

Vì theo mặc định, trình kết nối/Python tắt AutoCommit và MySQL 5.5 và cao hơn sử dụng các bảng giao dịch

.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
5 theo mặc định, nên cần phải thực hiện các thay đổi của bạn bằng phương thức
.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string)
4 của kết nối. Bạn cũng có thể quay lại bằng phương pháp
.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string)
5.

S trong mysql python là gì?

Sử dụng các biến python trong truy vấn chèn MySQL, chúng ta có thể chèn các biến python vào bảng bằng cách sử dụng câu lệnh đã chuẩn bị và truy vấn được tham số hóa. Sử dụng truy vấn được tham số hóa, chúng ta có thể chuyển các biến Python làm tham số truy vấn trong đó các khoản giữ chỗ (%s) được sử dụng cho các tham số.placeholders (%s) used for parameters.

%S trong mysql là gì?

Đó là những người giữ chỗ Joep.Hendrix đã nhận xét 13 năm trước. Đó là những tham số giữ chỗ và đó là cách ưa thích để xây dựng các trình độ SQL. %s có thể phụ chuỗi, %d số thập phân, v.v.subsitute strings, %d decimals etc.

%S trong Python SQL là gì?

Chúng ta cần cung cấp các giá trị trong các khoản giữ chỗ ( %s) trước khi thực hiện truy vấn.Vượt qua các biến Python ở vị trí của người giữ chỗ khi chúng tôi thực hiện truy vấn.Chúng ta cần chuyển hai đối số sau cho một con trỏ.thực thi () hàm để chạy truy vấn tham số hóa.supply values in placeholders ( %s ) before executing a query. Pass Python variables at the placeholder's position when we execute a query. We need to pass the following two arguments to a cursor. execute() function to run a parameterized query.

Con trỏ trong Python MySQL là gì?

MySQLcursor của MySQL-ConneNector-Python (và các thư viện tương tự) được sử dụng để thực hiện các câu lệnh để liên lạc với cơ sở dữ liệu MySQL.Sử dụng các phương thức của nó, bạn có thể thực hiện các câu lệnh SQL, tìm nạp dữ liệu từ các bộ kết quả, quy trình cuộc gọi.used to execute statements to communicate with the MySQL database. Using the methods of it you can execute SQL statements, fetch data from the result sets, call procedures.