
你把你的二进制数据可以转成文本串插入,就跟普通的插入一样啊。
import MySQLdb, cPickle
# Connect to a DB, e.g., the test DB on your localhost, and get a cursor
connection = MySQLdb.connect(db="test")
cursor = connection.cursor( )
# Make a new table for experimentation
cursor.execute("CREATE TABLE justatest (name TEXT, ablob BLOB)")
try:
# Prepare some BLOBs to insert in the table
names = 'aramis', 'athos', 'porthos'
data = { }
for name in names:
datum = list(name)
datum.sort( )
data[name] = cPickle.dumps(datum, 2)
# Perform the insertions
sql = "INSERT INTO justatest VALUES(%s, %s)"
for name in names:
cursor.execute(sql, (name, MySQLdb.escape_string(data[name])) )
# Recover the data so you can check back
sql = "SELECT name, ablob FROM justatest ORDER BY name"
cursor.execute(sql)
for name, blob in cursor.fetchall( ):
print name, cPickle.loads(blob), cPickle.loads(data[name])
finally:
# Done. Remove the table and close the connection.
cursor.execute("DROP TABLE justatest")
connection.close( )
以PHP脚本为例。PHP一般只支持小于2M的文件,假如要存取大于2M的文件,那就要进系统方面的设置了。具体 *** 作如下:
首先创建测试表testtable
CREATE TABLE testtable ( id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,filename CHAR(255),data LONGBLOB )
将文件存入表中使用如下PHP代码
<?phpmysql_connect( "localhost", "root", "password") //连接数据库
mysql_select_db( "database") //选定数据库
$filename="" //这里填入二进制文件名
$data = addslashes(fread(fopen($filename, "r"), filesize($filename)))//打开文件并规范化数据存入变量$data中
$result=mysql_query( "INSERT INTO testtable (filename,data) VALUES ('$filename','$data')")//数据插入到数据库test表中
mysql_close()
?>
从表中取回文件,使用如下PHP代码
<?phpif($id) {
mysql_connect( "localhost", "root", "password")
mysql_select_db( "database")
$filename="" //这里填入二进制文件名
$query = "select data from testtable where filename=$filename"
$result = mysql_query($query)
$data = mysql_result($result,0, "data")
?>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)