The Python operation USES the instance code of the MySQL database
- 2020-06-01 10:19:29
- OfStack
MySQL Python operation
configuration
win_64 Ubuntu14.04 Python3.xpip installs the pymysql module
Install pip install pymysql directly using pip
win64 is executed directly in cmd
Connect to a local database
Connect to the database using the module pymysql
#!/usr/bin/python
# coding=utf-8
import pymysql
# Connect to a local database
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='a123', db='samp_db1', charset='utf8')
cursor = conn.cursor()
cursor.execute('select * from bigstu')
for row in cursor.fetchall():
print(row)
# check
cursor.execute('select id, name from bigstu where age > 22')
for res in cursor.fetchall():
print(str(res[0]) + ", " + res[1])
cursor.close()
print('-- end --')
Output:
(1, ' zhang 3', ' male ', 24, datetime.date(2017, 3, 29), '13666665555')
(6, ' pika~chu ', ' male ', 23, datetime.date(2017, 3, 11), '778899888')
(8, ' pikachu~pi ', ' female ', 20, datetime.date(2017, 3, 13), '13712345678')
(12, ' pikapi ', ' male ', 21, datetime.date(2017, 3, 7), '13787654321')
1, zhang 3
6, pika~chu
-- end --
You can directly execute the sql statement. The result is a tuple.
increase
Insert data
Insert 1 piece of data and the code that follows
insertSql = "insert into bigstu (name, sex, age, mobile) values ('%s','%s',%d,'%s') "
xiuji = (' Show, ', ' male ', 15, '13400001111')
cursor.execute(insertSql % xiuji)
conn.commit() # Don't forget to submit
Add columns
Add a column cash after mobile
addCo = "alter table bigstu add cash int after mobile"
cursor.execute(addCo)
If you want to set the default value
addCo = "alter table bigstu add cash int default 0 after mobile"
cursor.execute(addCo)
delete
Delete the data
Delete the data of name = soji
deleteSql = "delete from bigstu where name = '%s'"
cursor.execute(deleteSql % ' Show, ')
Delete the column
Delete cash column
dropCo = "alter table bigstu drop cash"
cursor.execute(dropCo)
change
Modify the data
Update qualified data
updateSql = "update bigstu set sex = '%s' where name = '%s'"
updateXiuji = (' Show, ', ' Show, ') # The gender of hideki is hideki
cursor.execute(updateSql % updateXiuji)
conn.commit()
To deal with things
Add cash to a record
table = "bigstu"
addCash = "update " + table + " set cash = cash + '%d' where name = '%s'"
lucky = (1000, " Show, ")
try:
cursor.execute(addCash % lucky)
except Exception as e:
conn.rollback()
print(" The increase failed ")
else:
conn.commit()
Directly execute SQL statement, 10 points convenient
Code snippet
Add columns to the database
Read the column names to be added from json and get all the column names in the current two tables
Collate the column names that need to be inserted, and then insert the column into the corresponding table
import pymysql
import json
import os
import secureUtils
mapping_keys = json.load(open("key_mapping_db.json", "r"))
db_keys = [] # json All of the key
for k in mapping_keys.values():
db_keys.append(k)
conn = pymysql.connect(host='localhost', port=3306, user='root',
passwd='*****', db='db_name', charset='utf8')
cursor = conn.cursor()
table_main = "table_main"
main_table_keys = [] # The column name of the main table
cursor.execute("show columns from " + table_main)
for row in cursor.fetchall():
main_table_keys.append(row[0])
staff_table_keys = []
cursor.execute("show columns from table_second")
for row in cursor.fetchall():
staff_table_keys.append(row[0])
need_to_insert_keys = []
for k in db_keys:
if k not in staff_table_keys and k not in main_table_keys and k not in need_to_insert_keys:
need_to_insert_keys.append(k)
print("need to insert " + str(len(need_to_insert_keys)))
print(need_to_insert_keys)
for kn in need_to_insert_keys:
print("add key to db " + kn)
cursor.execute("alter table staff_table add " + kn +" text")
conn.close()
Change the field character
Change all the fields in main_table_keys to utf8
(1, ' zhang 3', ' male ', 24, datetime.date(2017, 3, 29), '13666665555')
(6, ' pika~chu ', ' male ', 23, datetime.date(2017, 3, 11), '778899888')
(8, ' pikachu~pi ', ' female ', 20, datetime.date(2017, 3, 13), '13712345678')
(12, ' pikapi ', ' male ', 21, datetime.date(2017, 3, 7), '13787654321')
1, zhang 3
6, pika~chu
-- end --
0