以下是我常用的【python】连接、查询和修改SQL语句的方法,我把他们打包成def,方便日后调用,建议大家收藏使用!
1. 查询和修改sql语句的代码汇总
def mysql_engine(mysql_user,mysql_pwd,mysql_host,mysql_db):
'''连接数据库'''
engine = create_engine('mysql+pymysql://{}:{}@{}:3306/{}?charset=utf8'
.format(mysql_user, mysql_pwd,
mysql_host, mysql_db))
return engine
def create_table():
'''建表语句 使用的时候额外修改表名和字段!table是表名,id,url,html是字段'''
engine.execute('''
create table if not exists data(
id INTEGER PRIMARY KEY AUTOINCREMENT,
url text,
html text
)
''')
def read_sql(table_name,engine):
"""查询sql的数据"""
sql = ''' select * from %s''' % table_name
df = pd.read_sql_query(sql, engine)
return df
def get_data(sql):
"""自定义sql"""
return pd.read_sql_query(sql, engine)
def save_data(data,sql_name):
"""上传数据"""
data.to_sql(sql_name,con=engine,if_exists="append",index=False)
def run_sql(sql):
"""执行sql语句"""
engine.execute(sql)
def update_data(engine,result_json):
'''更新sql数据库的数据存入,table_name是表名,要自行修改'''
update_sql = f"UPDATE table_name SET status=1"
#如果修改的内容是个json,可以用一以下的部分 ,result_json表示的是json格式
update_sql = f"UPDATE table_name SET status=1, data_response='{json.dumps(result_json, ensure_ascii=False)}'".replace('%', '%%%%') #存入json的数据格式
print('sql语句是:',update_sql)
engine.execute(update_sql) #执行修改
如果感兴趣的朋友,可以把它封装成类。我比较喜欢用函数来调,省的搞self了
2.SQL附录:
- MySQL 常用的数据类型
数值类型
INT - 整数类型,用于存储整数值。
TINYINT - 非常小的整数类型,适用于存储非常小的整数值。
SMALLINT - 小整数类型,适用于存储较小的整数值。
MEDIUMINT - 中等大小的整数类型,适用于存储中等大小的整数值。
BIGINT - 大整数类型,用于存储非常大的整数值。
DECIMAL - 定点数类型,用于存储精确的数值,如货币。
FLOAT - 浮点数类型,用于存储单精度浮点数。
DOUBLE - 双精度浮点数类型,用于存储双精度浮点数。
字符串类型
CHAR - 固定长度的字符串类型,适用于存储长度固定的数据。
VARCHAR - 可变长度的字符串类型,适用于存储长度可变的字符串。
TEXT - 用于存储大量文本数据。
BLOB - 二进制大对象,用于存储大量二进制数据,如图片。
ENUM - 枚举类型,允许你为列的值设定一个允许的值列表。
SET - 集合类型,允许你为列的值设定一个值的集合。
日期和时间类型
DATE - 日期类型,格式为YYYY-MM-DD。
TIME - 时间类型,格式为HH:MM:SS。
DATETIME - 日期和时间类型,格式为YYYY-MM-DD HH:MM:SS。
TIMESTAMP - 时间戳类型,与UNIX时间戳类似。
YEAR - 年份类型,用于存储年份。
其他类型
BOOLEAN - 布尔类型,MySQL中使用TINYINT(1)来表示。
JSON - JSON类型,用于存储JSON格式的数据。
2.MySQL 常用的数据类型表格整理
(表格内容出自:《MySQL数据库原理及应用》)